介紹
類圖是統一建模語言(UML)的一種靜態圖,透過顯示系統的類、屬性、操作以及物件之間的關係,來視覺化呈現系統的結構。它作為物件導向軟體設計的藍圖,提供了一種清晰且簡明的方式,用以理解並記錄系統的架構。
目的與功能
視覺化系統結構
類圖幫助開發人員透過展示不同類別之間如何互動與關聯,來理解並記錄系統的結構。這種視覺化呈現對於設計穩健且可維護的軟體系統至關重要。
軟體建模
類圖允許以高階抽象的方式進行軟體建模,使開發人員能夠專注於設計,而不必深入探討原始碼。這種抽象有助於在開發初期就識別潛在問題。
物件導向設計
類圖是物件導向建模的基礎。它們闡明了系統的構建模塊及其互動方式,使實作封裝、繼承和多型等物件導向原則變得更容易。
資料建模
類圖也可用於資料建模,用以呈現系統內資料的結構與關係。這在資料庫設計中尤為有用,因為需要明確定義實體及其關係。
程式碼的藍圖
類圖作為構建軟體應用程式可執行碼的藍圖。它為開發人員提供清晰的路徑,確保實作與設計的架構一致。
關鍵元件
類別
類別以被分成三個部分的矩形來表示:
- 類別名稱:頂部區域包含類別的名稱。
- 屬性:中間區域列出定義類別狀態的屬性或資料成員。
- 操作(方法):底部區域列出類別可以執行的操作或函數。
關係
類別之間的關係以線條與符號來表示:
- 泛化:代表繼承,即一個類別(子類)從另一個類別(父類)繼承屬性和操作。以空心箭頭表示,箭頭從子類指向父類。
- 聚合:表示一個類別包含另一個類別的實例,但被包含的類別可以獨立存在。以線條末端連接到包含類別的空心菱形表示。
- 組合: 一種更強的聚合形式,其中包含的類無法在包含類不存在的情況下存在。它以連接到包含類的線末端的實心菱形表示。
- 關聯: 表示兩個類之間的關係,表明一個類使用或與另一個類互動。它以一條實線連接兩個類來表示。
使用 PlantUML 的範例圖示
基本類圖
包含聚合與組合的圖示
包含關聯的圖示
範例 – 訂單系統

關鍵元素
-
類別:
- 客戶: 表示下訂單的客戶。
- 屬性:
姓名(字串),地址(字串)。
- 屬性:
- 訂單: 表示客戶下的訂單。
- 屬性:
日期(日期),狀態(字串)。 - 作業:
計算小計(),計算稅額(),calcTotal(),calcTotalWeight().
- 屬性:
- OrderDetail: 代表訂單中每個項目之細節。
- 屬性:
數量(整數),稅務狀態(字串)。 - 操作:
calcSubTotal(),calcWeight(),calcTax().
- 屬性:
- Item: 代表所訂購的項目。
- 屬性:
運送重量(浮點數),描述(字串)。 - 操作:
getPriceForQuantity(),getTax(),inStock().
- 屬性:
- 付款 (抽象類別):代表訂單的付款。
- 屬性:
金額(浮點數)。
- 屬性:
- 現金:Payment 的子類別,代表現金付款。
- 屬性:
交付現金(浮點數)。
- 屬性:
- 支票:Payment 的子類別,代表支票付款。
- 屬性:
姓名(字串),銀行代碼(字串),是否已授權(布林值)。
- 屬性:
- 信用卡:Payment 的子類別,代表信用卡付款。
- 屬性:
卡號(字串),類型(字串),有效期限(日期),已授權(布林值)。
- 屬性:
- 客戶: 表示下訂單的客戶。
-
關係:
- 關聯:
- 客戶 和 訂單: 客戶可以下多筆訂單(
0..*訂單端的多重性)。 - 訂單 和 訂單明細: 訂單可以包含多筆訂單明細(
1..*訂單明細端的多重性)。 - 訂單明細 和 商品: 每筆訂單明細與一項商品相關聯(
1商品端的多重性)。
- 客戶 和 訂單: 客戶可以下多筆訂單(
- 聚合:
- 訂單 和 訂單明細: 表示訂單明細是訂單的一部分,但訂單明細可獨立存在。
- 泛化:
- 付款及其子類(
現金,支票,信用:表示繼承關係,其中現金、支票和信用是付款的具體類型。
- 付款及其子類(
- 角色:
- 訂單明細與項目:角色
明細項目表示訂單明細在訂單上下文中的特定角色。
- 訂單明細與項目:角色
- 關聯:
-
多重性:
- 表示一個類別的實例與另一個類別的單一實例之間可以關聯的實例數量。例如,一位顧客可以下多個訂單(
0..*).
- 表示一個類別的實例與另一個類別的單一實例之間可以關聯的實例數量。例如,一位顧客可以下多個訂單(
-
抽象類別:
- 付款:標記為抽象類別,表示它不能直接實例化,並作為其他付款類型的基類。
說明
- 顧客:代表下訂單的實體,具有姓名和地址等基本屬性。
- 訂單: 代表訂單本身,具有日期和狀態等屬性,以及計算小計、稅額、總金額和總重量的操作。
- 訂單明細: 代表訂單中每一項的細節,包括數量和稅務狀態,並具有計算小計、重量和稅額的操作。
- 項目: 代表所訂購的項目,具有運輸重量和描述等屬性,並具有取得數量價格、稅額和庫存狀態的操作。
- 付款: 一個抽象類別,代表訂單的付款,具有金額屬性。它有不同付款方式的子類別:
- 現金: 代表現金付款,具有交付現金的屬性。
- 支票: 代表支票付款,具有姓名、銀行代碼和授權狀態等屬性。
- 信用卡: 代表信用卡付款,具有卡號、類型、到期日和授權狀態等屬性。
該圖表有效地捕捉了訂單處理系統內的結構與關係,提供了不同組件之間互動的清晰視覺呈現。
結論
類圖是UML建模中的一項重要工具,提供了一種清晰且結構化的方式來表示系統的架構。透過理解關鍵組件與關係,開發人員可以建立強健且可維護的軟體設計。使用PlantUML等工具,這些圖表可以輕鬆地視覺化並在團隊成員之間共享,提升協作效率,並確保對系統結構有統一的理解。
參考資料
-
Visual Paradigm Online 免費版:
-
令人印象深刻的繪圖功能:
-
全面的繪圖選項:
-
學習與自訂:
-
社群與支援:
這些參考資料突顯了使用 Visual Paradigm 建立類別圖的全面功能與優勢,使其成為個人與專業用途的推薦工具










