de_DEen_USes_ESfa_IRfr_FRhi_INid_IDjapl_PLpt_PTru_RUvizh_CNzh_TW

🎓 UML 類圖入門教程

使用 Visual Paradigm 學習統一建模語言

「一張圖勝過千行程式碼」— UML 類圖可幫助您在撰寫任何程式碼之前,視覺化、設計並溝通物件導向系統。

🔹 什麼是 UML?

統一建模語言(UML)是一種標準化的圖形符號,用於視覺化、規格化、建構和文件化物件導向軟體系統。

一種 類圖是一種 靜態結構圖透過展示以下內容來描述系統:

  • ✅ 類別 – 物件的藍圖

  • ✅ 屬性 – 類別的資料/屬性

  • ✅ 操作(方法) – 行為/功能

  • ✅ 關係 – 物件之間如何互動

💡 為什麼要學習 UML?它能彌補需求與程式碼之間的差距,提升團隊溝通效率,並幫助早期發現設計缺陷。


🔹 理解類別與物件

什麼是類別?

一種 類別 是用來建立物件的藍圖。它定義了:

  • 狀態 (屬性/特性)

  • 行為 (操作/方法)

什麼是物件?

一個 物件 是類別的一個 實例 類別的實例——根據類別藍圖建立的具體實體。

What is a class?

🐕 實際世界範例:狗類別

類別:狗
├─ 屬性:顏色、名字、品種
└─ 行為:搖尾巴()、吠叫()、吃東西()

每個  物件(例如 我的寵物鄰居的狗) 具有相同的結構,但儲存獨特的資料。


🔹 UML 類別符號說明

UML 類別以一個 三格矩形:

UML Class Notation

1️⃣ 類別名稱(頂部分區)

  • 必要 – 唯一必需的元素

  • 以 純文字,居中,粗體

  • 抽象類別以 顯示斜體

2️⃣ 屬性(中間區段)

  • 格式: 可見性 名稱 : 類型 = 預設值

  • 對應至 成員變數 在程式碼中

  • 範例: - 年齡 : 整數 = 0

3️⃣ 操作/方法(底端區段)

  • 格式: 可見性 方法名稱(參數 : 類型) : 回傳類型

  • 對應至 類別方法 在程式碼中

  • 範例: + 計算總額() : 雙精度

Class Operations


🔹 類別可見性與參數

🔐 可見性修飾詞

前置符號表示存取層級:

符號 可見性 可存取來源
+ 公開 任何地方
- 私有 僅限於類別內部
# 受保護 類別及子類別內

Class Visibility

➡️ 參數方向性

指定方法參數中的資料流動方式:

方向 含義
in 僅輸入(預設)
out 僅輸出
inout 輸入與輸出

Parameter Directionality

💡 小提示:大多數程式語言預設為 in 參數。在建模 API 或複雜資料流時,請使用方向性。


🔹 類別圖的三個觀點

根據您的開發階段,選擇圖表的詳細程度:

Perspectives of Class Diagram

觀點 何時使用 重點
概念性 早期分析、領域建模 商業概念、現實世界實體
規格 設計階段、介面定義 抽象資料類型(ADTs)、方法簽章
實作 程式撰寫階段、技術設計 具體類別,語言特定細節

🎯 最佳實務: 從概念開始 → 演進至實作。不要在早期圖表中過度堆疊技術細節。


🔹 類別之間的關係

UML 精確定義類別之間如何互動。掌握這六種核心關係:

Relationships between classes

1️⃣ 繼承(泛化)→ 「是—一種」

  • 代表特殊化:子類別  父類別

  • 符號:實線搭配空心三角形箭頭指向父類別

  • 抽象類別以斜體

Inheritance (or Generalization)

📐 範例:形狀層次結構

Inheritance Example - Shapes

// 程式碼對應
抽象類別 Shape { ... }
類別 Circle 繼承 Shape { ... }
類別 Rectangle 繼承 Shape { ... }

2️⃣ 關聯 → 「使用—一種」(結構連結)

  • 代表同級類別之間的持久性關係

  • 符號:實線類別之間

  • 通常以動詞片語標示:放置管理包含

簡單關聯範例:

Simple Association

🔢 基數(多重性)

定義有多少個實例參與:

符號表示 含義 範例
1 恰好一個 一位客戶下一個訂單
0..1 零個或一個 使用者可能有一個個人檔案
*0..* 零個或多個 一個部門有許多員工
1..* 一個或多個 一個訂單至少包含一個項目

Cardinality

3️⃣ 聚合 → 「擁有」(弱擁有)

  • 特殊關聯:「部分與整體」關係

  • 零件可以獨立存在獨立地於整體之外

  • 符號表示:實線搭配空心菱形於「整體」一端

Aggregation

// 範例:部門聚合教授
class Department {
    private List<Professor> professors; // 即使部門解散,教授仍存在
}

4️⃣ 組合 → 「強擁有」(強擁有)

  • 聚合的更強形式

  • 零件無法存在沒有整體就無法存在;生命週期相互關聯

  • 符號:實線搭配實心菱形位於「整體」端

Composition

// 範例:房屋組成房間
class House {
    private List<Room> rooms; // 房間會在房屋拆除時一同被銷毀
}

⚠️ 關鍵差異:

  • 聚合:汽車擁有輪子→ 輪子可以重複使用

  • 組成:房屋擁有房間→ 房間無法在沒有房屋的情況下存在

5️⃣ 依賴 → 「暫時使用」

  • 一個類別依賴於另一個類別以進行實作(例如:方法參數)

  • 並非結構性關係;供應者變更可能影響客戶

  • 符號:虛線搭配開放箭頭

Dependency

實際範例:個人閱讀書籍

Dependency

class Person {
    boolean hasRead(Book book) { ... } // 書籍是參數 → 依賴關係
}

6️⃣ 實作 → 「實作」

  • 介於一個與其之間的關係介面及其實作類別

  • 符號:虛線搭配空心三角形箭頭

Realization

// Java 範例
介面 Owner {
    void acquireProperty();
    void disposeProperty();
}

類別 Person 實作 Owner { ... }
類別 Corporation 實作 Owner { ... }

🔹 實際應用範例

🛒 範例 1:訂單管理系統

Class Diagram Example: Order System

重點摘要:

  • 顧客 下訂單 訂單 (關聯,1..*)

  • 訂單 由…組成 訂單項目 (組合)

  • 訂單項目 參考 產品 (關聯)

  • 付款 實作 IPayment 介面 (實作)

💻 範例 2:帶有註解的 GUI 應用程式

Class Diagram Example: GUI

重點摘要:

  • 註解(黃色方框)提供說明,而不會使類別變得雜亂

  • JFrame 包含 JPanel (組成)

  • 事件監聽器使用依賴關係


🔹 推薦的 UML 工具

工具 最適合 價格 平台
🥇 Visual Paradigm Community Edition 初學者、學生、完整的 UML 支援 ✅ 免費 Windows/macOS/Linux
Lucidchart 協作、基於網頁 免費增值 網頁
draw.io (diagrams.net) 快速繪製圖表、簡單易用 ✅ 免費 網頁/桌面
StarUML 輕量級、可擴展 付費(免費試用) Windows/macOS/Linux
Enterprise Architect 大型團隊、複雜系統 付費

🏆 為什麼選擇 Visual Paradigm 社區版?

✅ 100% 免費 用於學習及非商業用途
✅ 所有 UML 2.x 圖表類型 支援(類別、用例、序列等)
✅ 直覺的拖放介面 – 無需編碼
✅ 程式碼工程:從圖表生成程式碼並反向工程
✅ 跨平台:Windows、macOS、Linux
✅ 獲獎肯定:全球大專院校與專業人士的信賴之選

🔗 免費下載 Visual Paradigm 社區版


🔹 開始使用 Visual Paradigm:5 分鐘快速設定

  1. 下載與安裝
    → 前往visual-paradigm.com/download/community.jsp
    → 選擇您的作業系統 → 安裝(不到 2 分鐘)

  2. 建立新專案
    → 啟動 VP → 專案 → 新增 → 選取「類別圖」

  3. 新增您的第一個類別
    → 從工具箱拖曳「類別」→ 雙擊編輯名稱
    → 右鍵按一下類別 → 新增 → 屬性 / 作業

  4. 繪製關係
    → 使用工具列中的關係工具(繼承、關聯等)
    → 點選來源類別 → 拖曳至目標類別

  5. 匯出與分享
    → 圖形 → 匯出 → PNG/PDF/SVG
    → 或產生 Java/C# 程式碼: 工具 → 程式碼工程

🎬 專業提示: 使用 模型 → 模型報告自動從您的圖表生成文件!


🎯 快速參考速查表

類圖語法摘要

+---------------------+
|     類別名稱        |  ← 上方:名稱(必需)
+---------------------+
| - 屬性 : 類型       |  ← 中間:屬性
| + 名稱 : 字串       |
+---------------------+
| + 方法() : 類型     |  ← 下方:操作
| - 計算(x: 整數):整數|
+---------------------+

關係符號快速指南

關係 符號 關鍵字
繼承 ───▷ 「是-a」
關聯 ─── 「有-a」/「使用」
聚合 ───◇ 「部分-a」(弱)
組合 ───◆ 「部分-a」(強)
依賴 – – -> 「暫時使用」
實作 – – ▷ 「實作」

🚀 UML 初學者的下一步

  1. ✅ 練習: 建立一個簡單系統的模型(圖書館、銀行帳戶、購物車)

  2. ✅ 逆向工程: 將現有的 Java/C# 程式碼匯入 Visual Paradigm,以查看自動產生的圖表

  3. ✅ 協作: 與團隊成員分享圖表,進行設計審查

  4. ✅ 迭代: 從概念開始 → 在編碼過程中逐步精煉為實作

  5. ✅ 探索: 接下來學習用例圖、順序圖和活動圖

💬 記住: UML 是一種溝通工具,而不是繁文縟節。讓圖表保持足夠簡單——但不要更簡單。


✨ 你已經準備好以專業水準進行設計了!
今天就開始使用 Visual Paradigm Community Edition — 免費、強大且適合初學者。

祝你建模愉快! 🎨🔧🚀