引言
UML中的類圖是什麼?
類圖透過展示系統中的類別及其類別之間的關係,來描述物件導向系統的結構。類圖還會顯示類別的約束條件與屬性。

💡 試試看!正在尋找線上類圖工具嗎?只需點擊下方的「繪製」按鈕,即可線上建立您的類圖。Visual Paradigm Online免費*且直覺易用。您也可以先透過此類圖教學,學習類圖相關知識再開始使用。
類圖符號
類別
UML中類別的表示方式是一個包含三個垂直堆疊區段的矩形,如圖所示:

屬性
類別的屬性區段會將每個屬性分別列在單獨的一行上。屬性區段是可選的,但若使用,則會以清單格式顯示類別的每個屬性。該行使用以下格式:
名稱 : 屬性類型
範例: 卡號 : 整數
操作
操作會記錄在類圖矩形的底部區段中,此區段也是可選的。與屬性類似,類別的操作以清單格式顯示,每個操作佔一行。操作使用以下符號記錄:
名稱(參數清單) : 回傳值類型
範例: 計算稅額(國家,州) : 貨幣
關係
關聯
某些物件是由其他物件組成的。關聯指定兩個類別之間的「擁有」或「整體/部分」關係。在關聯關係中,整體類別的物件會以部分類別的物件作為實例資料。
在類別圖中,關聯關係以一條有方向的實線表示。
單向關聯
在單向關聯中,兩個類別有關聯,但僅有一個類別知道此關聯的存在。單向關聯以一條實線搭配開口的箭頭表示,箭頭指向已知的類別。

雙向(標準)關聯
關聯是兩個類別之間的連結。關聯總是被假設為雙向的;這表示兩個類別都了解彼此及其關聯,除非你將關聯明確標示為其他類型。雙向關聯以兩個類別之間的實線表示。

多重性
將多重性符號放置在關聯的兩端附近。這些符號表示一個類別的實例與另一個類別的實例之間的連結數量。
範例:一家公司將擁有一名或多名員工,但每位員工僅為一家公司工作。

| 符號 | 含義 |
|---|---|
1 |
恰好一個 |
0..1 |
零個或一個 |
*或0..* |
零個或更多 |
1..* |
一個或更多 |
0..3 |
零到三個 |
可見性
可見性用來表示哪些人可以存取類別中所包含的資訊,該類別以符號標示+, -, # 和 ~ 如图所示:

| 符號 | 可見性 | 描述 |
|---|---|---|
+ |
公開 | 可從任何其他類存取 |
- |
私有 | 僅可在類本身內部存取 |
# |
保護 | 可在類及其子類中存取 |
~ |
套件 | 可在同一套件內存取 |
一般化
一般化是一種關係,介於一個一般性的事物(稱為超類別)與該事物的更特定類型(稱為子類別)之間。一般化有時被稱為「是一種」的關係,並透過繼承過程建立。
在類別圖中,一般化關係以一條實線的有向線條表示,並帶有一個大型的開口箭頭,指向父類別。

抽象類別與方法
在繼承層次結構中,子類別實作具體細節,而父類別則定義其子類別的架構。父類別也作為子類別將實作的常見方法的範本。

-
一個 抽象類別 通常以 斜體;或者,抽象類別可使用文字註解表示,也稱為類型範疇
{抽象}在名稱之後或下方。 -
一個抽象方法是一種沒有實作的方法。要建立抽象方法,請建立一個操作並使其斜體.
實現
實現是一種兩物之間的關係,其中一個事物(介面)指定了一項合約,另一個事物(類別)則保證透過實作該合約中所指定的操作來履行此合約。
在類別圖中,實現關係以一條虛線的有向線段表示,箭頭為開放式,指向介面。

依賴
依賴表示兩個類別之間的「使用」關係。在類別圖中,依賴關係以一條虛線的有向線段表示。
如果類別 A「使用」類別 B,則以下敘述通常成立:
-
類別 B 被用作類別 A 中一個或多個方法的區域變數類型。
-
類別 B 被用作類別 A 中一個或多個方法的參數類型。
-
類別 B 被用作類別 A 中一個或多個方法的傳回類型。
-
類別 A 中一個或多個方法呼叫類別 B 中一個或多個方法。

何時繪製類別圖?
大多數 UML 圖表無法直接對應到任何物件導向程式語言,除了類別圖之外。換句話說,類別圖理想上可以與 UML 類別圖一一對應。此外,類別圖在以下情況下非常有用:
-
描述系統的靜態觀點– 在某一時刻捕捉類別及其關係的結構。
-
模擬靜態觀點中各元素之間的協作– 展示類別如何透過關聯與依賴進行互動。
-
描述系統所執行的功能– 將操作連結至類別,以說明行為。
-
使用物件導向語言建構軟體應用程式– 作為 Java、C# 或 Python 等語言實作的藍圖。
-
針對目標系統執行程式碼正向工程– 直接從類別圖產生骨架程式碼。
-
將類別或元件分類為未來重用的程式庫– 記錄可重用元件,以支援模組化開發。
如何繪製類別圖?
按照以下逐步說明,建立有效的類別圖:
-
識別問題領域中的物件並為每個物件建立類別。
範例: 註冊系統中的教師、學生、課程。 -
為這些類別新增屬性.
範例:姓名,地址,電話針對學生類別。 -
為這些類別新增作業.
範例:addStudent(學生)針對課程類別。 -
使用適當的關係連接這些類別.
範例: 以關聯關係連結教師與課程。 -
可選擇性地指定關聯連接器端點的多重性.
範例: 輸入0..3針對連結教師與課程的關聯關係中的課程端,以表示一位教師最多可教授三門課程。
額外的最佳實務
-
繪製套件以進行類別的邏輯分類以改善組織結構與可讀性:

-
為類別名稱使用有意義的單數名詞(例如:
客戶,而非客戶們). -
保持圖示專注:每個子系統或功能區域對應一個圖示。
-
為屬性和操作應用一致的命名規範。
-
必要時使用註解或 OCL(物件約束語言)來記錄約束條件。
類別圖範例
範例 1:銷售訂單系統
以下類別圖範例顯示了銷售訂單系統中涉及的類別。請注意類別模型中使用了<<列舉>>類別。

範例 2:航班管理系統
以下類別圖範例顯示了一組與航班管理相關的類別。這些類別被歸類於一個套件之下。

想繪製一個類別圖嗎?
你已經學會了類別圖是什麼,以及如何一步步繪製類別圖。是時候親自動手繪製屬於自己的類別圖了。使用 Visual Paradigm Online 免費繪製 UML 圖表。操作簡單,直覺易用。
* 免費版本僅支援 Visual Paradigm Online 的非商業用途免費使用。非商業用途僅此而已。
結論
🎯 重點要點: 一個出色的類圖並不是追求完美,而是追求清晰、溝通以及建立共同理解,從而推動更好的軟體開發。從簡單開始,經常迭代,讓你的圖表隨著系統的發展而演進。
參考文獻
-
什麼是UML?統一建模語言全面指南: 這深入介紹解釋了UML的目的、其主要圖表類型,以及它如何支援軟體設計與系統建模.
-
什麼是類圖?——UML建模入門指南: 這資訊豐富的概述解釋了類圖的目的、組成部分及其在兩者中的關鍵重要性軟體開發與系統設計.
-
初學者與專家的完整UML類圖教程: 一個逐步教程旨在引導使用者完成創建與理解UML類圖的整個過程,以掌握軟體建模.
-
由Visual Paradigm推出的AI驅動UML類圖生成器: 這先進的AI輔助工具利用自然語言描述來自動生成UML類圖,大幅簡化設計階段。
-
14種UML圖表類型概覽 – Visual Paradigm: 一份詳細說明大量圖示符號分類為14種不同的UML模型,每種在軟體工程.
-
UML 中的類圖與物件圖:主要差異: 本指南提供了一個清晰的對比類圖與物件圖之間的對比,突顯其特定結構並釐清何時使用每種類型.
-
從問題描述到類圖:AI 驅動的文字分析: 探討如何生成式 AI將自然語言的問題描述轉換為精確的類圖以進行結構化的軟體建模。
-
掌握類圖:使用 Visual Paradigm 的深入探討: 一份全面的技術指南詳細介紹如何在 Visual Paradigm 建模環境中建立類圖。
-
真實案例研究:使用 Visual Paradigm AI 產生 UML 類圖: 本研究示範了一位AI 助手成功地將文字需求轉換為精確的 UML 類圖,用於真實世界的工程專案。
-
使用 Visual Paradigm 的逐步類圖教學: 一份實用的教學指南涵蓋開啟專案、新增類別,並建立完整圖表以進行系統架構.











