OOT (ITP4909) 終極考試重點筆記

目錄 (Table of Contents)

A1: 結構塑模 - UML 類別圖 (Class Diagram)

考核重點:根據情境描述繪製詳細的類別圖,包含類別、屬性、方法、關聯與繼承結構。

標準解題步驟 (文本分析法)

1. 圈出名詞 (Nouns)區分「獨立實體 (Class)」與「特徵 (Attribute)」。
2. 圈出動詞 (Verbs)尋找實體間的動作,轉化為「關聯名稱 (Association Name)」。
3. 決定多重性 (Multiplicities)1..* (一個或多個)、0..* (零個或多個)、1 (剛好一個)。
4. 建立繼承 (Inheritance)尋找「是一種 (is-a)」的關係,抽出共通屬性建構父類別。

類別方塊 (Class Box) 必背定義

<<interface>>
Robot
- modelNumber: String
+ totalCount: int
# status: String
+ calculateSpecs(): void
+ getModel(): String
+ getLimit(): int

必背關係線條與符號

關係符號外觀說明
一般關聯 (Association)A ────▶ B實線連接。開口箭頭代表單向導覽性 (Navigability),箭頭指的方向是尋找的方向。
一般化/繼承 (Generalization)Sub ────▷ Super實線 + 空心三角箭頭指向父類別。
實現介面 (Realization)Class - - - - ▷ Interface虛線 + 空心三角箭頭指向介面。
聚合 (Aggregation)整體 ◇──── 部分實線 + 空心菱形畫在「整體」端。(Has-a,部分可獨立存活)
合成 (Composition)整體 ◆──── 部分實線 + 實心菱形畫在「整體」端。(強烈依存,部分隨整體死亡)
相依 (Dependency)A - - - - ▶ B虛線 + 開口箭頭。A 的運作依賴 B 的變更。

A2: 實作模型 - UML 轉 Java 程式碼

考核重點:將 UML 類別圖(包含繼承、一對多關聯)轉寫為 Java 程式碼,並寫出 Test.java 的輸出。

一對多關聯 (1..*) 標準實作公式 (絕對必考)

// 在「一」的一方宣告 Vector (或 ArrayList) 集合 public class Restaurant { private Vector _menus; public Restaurant() { _menus = new Vector(); // 建構子內初始化 } // 必寫 1: add 方法 public void addMenu(Menu menu) { _menus.add(menu); } // 必寫 2: 回傳 Enumeration 的 getter 方法 public Enumeration getMenus() { return _menus.elements(); } }

Test.java 逆向工程與預期輸出考點

A3: 行為塑模 - 活動圖與狀態機圖

考核重點:將操作流程轉化為「注重動作先後」的活動圖,與「注重系統狀態」的狀態機圖。

活動圖 (Activity Diagram) 語法

★ 狀態機圖 (State Machine) 致命考點 ★

狀態命名必須是形容詞或 V-ing (如 Waiting for login, Processing)。
箭頭上的轉換標籤 (Transition) 必須嚴格遵守黃金公式:

Event [Guard Condition] / Action

(觸發事件 [防衛條件] / 系統反應動作)
範例:press button [cancel button pressed] / display login screen


擴充考點 (內部動作):若題目描述進入狀態時會做某事,須在狀態框內寫:
entry / 動作 (進入時執行一次)
do / 動作 (停留時持續執行)
exit / 動作 (離開時執行一次)

B1: 需求塑模 - 使用案例圖 (Use Case Diagram)

必背名詞定義

箭頭與關係語法 (最易失分區)

關係名稱畫法與方向說明
包含 (Include) Base - - <<include>> - - ▷ Included 虛線+開口箭頭。方向:主要動作 ➔ 共用/必定執行的動作
擴充 (Extend) Extending - - <<extend>> - - ▷ Base 虛線+開口箭頭。方向:附加的選擇性動作 ➔ 主要動作
系統邊界 (Boundary) 大矩形框 Actor 絕對不能畫在框內!Use Case 全在框內。

B2: 領域塑模 - 文本分析與初步類別圖

(B2a) 候選類別 6 大合法分類 (必須死背英文)

  1. Tangible things (實體事物):看得見摸得著 (如 Classroom, Coffee)
  2. Conceptual things (概念事物):非物理存在的概念 (如 Course, Subscription)
  3. Events / Transactions (事件/交易):發生在特定時間 (如 Booking, Payment)
  4. Roles played (扮演角色):人或組織扮演的角色 (如 Customer, Manager)
  5. Outside organizations (外部組織):外部機構 (如 Supplier, Publisher)
  6. Other systems (其他系統):互動的外部電腦系統 (如 Payment Gateway)

(擴充考點) 應被排除的名詞與 7 大理由 (Reasons for Omission)

若被問「為何某名詞不能當類別」,請寫:

★ B2b 初步類別圖陷阱 ★

題目通常要求 NOT required to show attributes/operations。請只畫最簡單的空矩形(只有類別名稱)。寫出屬性不但沒分,還可能因為寫錯被扣分!記得補上動詞(關聯名稱)與連線即可。

B3: 架構設計 - MVC 循序圖與溝通圖

考核重點:事件流程 (Flow of events) 與 三層式 (3-Tier) 循序圖設計。

解題守則與 MVC 圖示

循序圖 (Sequence Diagram) 進階語法