首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

UML 類別圖六大關係深度解析

     編輯:Java 相關知識

掌握類別圖關係,精準表達系統架構

UML 類別圖是物件導向分析設計的核心工具。六種關係由強到弱依序為:泛化、實現、組合、聚合、關聯、依賴。本文逐一解析定義、箭頭表示、程式碼對應與實務應用場景。

關係強弱總覽

泛化 = 實現 > 組合 > 聚合 > 關聯 > 依賴

1. 泛化 - Generalization

定義:繼承關係,表達「is-a」關係,子類別特化父類別。

箭頭:實線 + 空心三角箭頭 → 指向父類別

程式碼:class Child extends Parent

範例:老虎 → 動物

2. 實現 - Realization

定義:類別實作介面,表達「can-do」關係。

箭頭:虛線 + 空心三角箭頭 → 指向介面

程式碼:class Impl implements Interface

範例:ArrayList → List

3. 關聯 - Association

定義:結構性關係,一個類別知道另一個類別的屬性與方法,表達「has-a」。可單向、雙向、自我關聯。

箭頭:實線 + 實心箭頭 → 指向被擁有者(雙向可無箭頭或雙箭頭)

程式碼:成員變數

class Teacher {
    List<Student> students;  // 雙向關聯
    Course course;           // 單向關聯
}

4. 聚合 - Aggregation

定義:整體與部分關係,部分可脫離整體獨立存在(弱擁有)。

箭頭:實線 + 空心菱形 → 菱形指向整體

程式碼:成員變數(語法上與關聯無異,靠語意區分)

範例:汽車 ↔ 輪胎(輪胎可拆卸單獨存在)

5. 組合 - Composition

定義:整體與部分關係,部分不可脫離整體獨立存在(強擁有),整體負責部分生命週期。

箭頭:實線 + 實心菱形 → 菱形指向整體

程式碼:成員變數,通常在建構子中初始化

範例:公司 ↔ 部門(無公司則無部門)

6. 依賴 - Dependency

定義:使用關係,一個類別實作需要另一個類別協助,盡量避免雙向依賴。

箭頭:虛線 + 實心箭頭 → 指向被使用者

程式碼:區域變數、方法參數、靜態方法呼叫

class OrderService {
    public void process(Order order) {  // 參數依賴
        EmailUtil.send(order.getEmail()); // 靜態方法依賴
    }
}

關鍵區分技巧

關係生命週期綁定可否共享典型場景
組合是(同生共死)否House-Room, Order-OrderItem
聚合否是Car-Wheel, Department-Employee
關聯否是Teacher-Student, User-Address

實務建議

  1. 優先使用關聯:不確定時用關聯,語意最寬鬆
  2. 謹慎用組合:確認部分確實無法獨立存在
  3. 依賴最常見:方法參數、工具類呼叫皆為依賴
  4. 避免過度設計:圖表服務於溝通,非炫技
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved