de_DEen_USes_ESfr_FRid_IDjapl_PLpt_PTru_RUvizh_CN

理解UML物件圖與類圖:包含範例的完整教學

本教學提供對UML的深入比較物件圖類圖著重於物件圖如何在執行時期捕捉系統狀態,與類圖所提供的靜態結構進行對比。內容包含詳細說明與多個範例,協助讀者理解兩種圖表類型及其實際應用。

1. UML圖表簡介

統一模型語言(UML)是一種標準化的方式,用以視覺化系統的設計與行為。在其圖表類型中,類圖物件圖對於建模物件導向系統至關重要,但各自具有不同的用途:

  • 類圖描述系統的靜態結構,定義類別、其屬性、方法與關係。
  • 物件圖捕捉系統在執行時期的動態狀態,顯示特定執行時刻的實體物件及其關係。

本教學探討物件圖如何反映執行時期的狀態,與類圖所呈現的永恆且結構性的觀點進行比較,並搭配實際範例。

2. 類圖:靜態藍圖

目的與結構

類圖是物件導向設計的骨幹,提供系統架構的靜態觀點,定義:

  • 類別:物件的範本,指定屬性(資料)與方法(行為)。
  • 關係: 類別之間的關聯、聚合、組合、泛化與依賴關係。
  • 約束條件: 管理系統結構的規則或條件。

類別圖是永恆的,表示它們在不參考執行過程中特定時刻的情況下,呈現系統的設計。它們用於系統設計、實作規劃與程式碼產生。

關鍵元素

  • 類別: 以具有三個區段(名稱、屬性、方法)的矩形表示。
  • 屬性: 類別的屬性或資料欄位(例如:name: String)。
  • 方法: 類別可執行的操作或行為(例如:calculateTotal(): double)。
  • 關係:
    • 關聯: 類別之間的一般性連結(實線)。
    • 聚合: 一種「擁有」關係(空菱形)。
    • 組合: 一種更強的「擁有」關係(實心菱形)。
    • 泛化: 繼承或「是」關係(帶空三角箭頭的箭頭)。
    • 依賴: 一種較弱的關係,其中一個類別依賴於另一個類別(虛線)。

範例情境

類別圖非常適合用於:

  • 設計軟體系統的架構。
  • 向開發人員或利害關係人傳達系統結構。
  • 在物件導向程式設計中產生程式碼骨架。

3. 物件圖:執行時快照

目的與結構

物件圖提供一個系統在執行期間特定時刻的快照,顯示實例化的物件、其屬性值以及它們之間的關係(連結)。它們是動態的,捕捉特定情境或使用案例中系統的狀態。

物件圖源自類別圖,因為物件是類別的實例,而連結是類別圖中定義的關聯的實例。

主要元素

  • 物件:以矩形表示,格式為物件名稱:類別名稱,顯示特定的屬性值。
  • 連結:物件之間的連接,代表類別圖中關聯的實例。
  • 屬性值:物件在特定時間的屬性具體值(例如,價格 = 99.99)。
  • 多重性:表示關係中涉及多少物件(例如,一對多)。

範例情境

物件圖適用於:

  • 在特定使用案例或測試情境中,視覺化物件的狀態。
  • 用於除錯,以了解執行時物件之間的互動。
  • 驗證系統行為是否符合需求。

4. 物件圖與類別圖之間的主要差異

面向 類別圖 物件圖
目的 定義類別的靜態結構與關係。 顯示執行時物件及其關係的快照。
焦點 抽象類別及其潛在關係。 具體實例(物件)及其目前狀態。
時間觀點 超越時間,代表系統的設計。 時間性,捕捉執行過程中的特定時刻。
內容 屬性、方法以及關係(關聯、泛化)。 具有特定屬性值和連結的物件。
使用案例 系統設計、架構與程式碼產生。 除錯、情境驗證與執行時期狀態分析。
範例 一個具有 model 等屬性與 drive() 等方法的 Car 類別。 一個 myCar: Car 物件,其 model = “Toyota”,並連結至一個 myEngine: Engine 物件。

5. 實際範例

以下是三個詳細範例,比較不同系統的類別圖與物件圖。

範例 1:線上購物系統

情境

一個線上購物系統包含顧客、訂單與商品。類別圖定義結構,而物件圖則顯示顧客在結帳時的訂單。

類別圖

說明:類別圖定義:

  • Customer 具有屬性與下訂單的方法。
  • Order 具有屬性與計算總額的方法。
  • Product 具有屬性與取得價格的方法。
  • 關係:顧客可下多筆訂單(一對多),而訂單包含多項商品(一對多)。

物件圖

說明:物件圖顯示:

  • 一位特定的顧客(john: Customer),具有具體的屬性值。
  • 約翰下的一個特定訂單(order123:訂單),總金額為149.98美元。
  • 訂單中包含兩種產品(筆記型電腦和滑鼠),並附有各自的價格。
  • 顯示執行時期關係的連結(例如:約翰下訂單order123,該訂單包含筆記型電腦和滑鼠)。

範例 2:圖書館管理系統

情境

圖書館系統管理書籍、會員與借閱。類別圖描述其結構,而物件圖則顯示一位會員借閱書籍的情況。

類別圖

說明:類別圖定義:

  • 會員具有屬性和借書的方法。
  • 書籍具有屬性和檢查可借性的方法。
  • 借閱具有屬性和延長借閱的方法。
  • 關係:一位會員可以有多筆借閱,而一本書可以在多筆借閱中被借出。

物件圖

說明:物件圖顯示:

  • 一位特定會員(alice:會員),具有具體的屬性值。
  • 一筆特定借閱(loan001:借閱),包含借閱與歸還日期。
  • 一本特定書籍(book1:書籍),為愛麗絲所借閱。
  • 顯示執行時期狀態的連結(例如:愛麗絲透過 loan001 借閱 book1)。

範例 3:汽車經銷系統

情境

汽車經銷系統管理汽車、引擎與車輪。類別圖定義其結構,而物件圖則顯示特定汽車的配置。

類別圖

說明:類別圖定義:

  • 汽車具有屬性和啟動引擎的方法。
  • 引擎具有屬性和點火的方法。
  • 車輪具有屬性和旋轉的方法。
  • 關係:汽車包含一個引擎(組合)與四個車輪(組合)。

物件圖

說明:物件圖顯示:

  • 一輛特定的汽車(myCar: Car),型號為「豐田凱美瑞」,年份為2023年。
  • 一具特定的引擎(engine1: Engine),類型為V6。
  • 四個特定的輪胎(wheel1 至 wheel4),尺寸為17。
  • 連結顯示執行時期的組成(例如,myCar 包含 engine1 和四個輪胎)。

6. 各圖示的使用時機

使用類別圖的情況:

  • 設計系統的架構或結構。
  • 向開發人員或利害關係人傳達系統的藍圖。
  • 產生程式碼骨架或資料庫結構。
  • 定義物件的可重用範本。

使用物件圖的情況:

  • 除錯時,用以理解執行時期的物件狀態與互動。
  • 驗證特定情境或使用案例(例如,測試結帳流程)。
  • 說明物件在特定情境下如何協作。
  • 向非技術性利害關係人教學或解釋執行時期的行為。

7. 總結

  • 類別圖提供一種靜態、抽象的視圖用以描述系統的類別、屬性、方法與關係。對於系統設計與規劃至關重要。
  • 物件圖捕捉系統在執行時期的動態、具體的快照顯示特定物件、其屬性值與連結。非常適合用於除錯與情境驗證。
  • 這兩種圖示相輔相成:類別圖奠定基礎,而物件圖則展示該基礎在實際執行中的表現。

透過線上購物系統、圖書館管理系統與汽車經銷系統等範例,本教程示範如何使用UML來建模系統的結構與執行時期狀態。

8. 參考資料

本教程提供了一份全面的指南,幫助您理解並應用類別圖與物件圖。透過掌握這兩種圖表類型,您將能有效設計、分析與除錯物件導向系統。

Follow
Loading

Signing-in 3 seconds...

Signing-up 3 seconds...