tags: UML
Class Diagram
Common 先修知識
【UML】Class Diagram 類別圖 (上):Introduction 簡介
Relationships 關係
Instance-level 物件層級
- Dependency 依賴
- Association 關聯
- Aggregation 聚合
- Composition 組合
Class-level 類別層級
- Realization / Implementation 實現 / 實作
- Generalization / Inheritance 泛化 / 繼承
Dependency 依賴
- 定義
- 相依
- A references B (as a method parameter or return type)
- 通常用在方法參數、回傳值
- 箭頭指向 被使用者
Example 例子
-
"客戶"使用"供應商"的參數
-
"課程表"使用"課程"的參數
-
"訂單"使用"付款系統"的參數
Association 關聯
- 定義
- 結合、關聯,class之間有關係
- A has-a C object (as a member variable)
- 通常用在屬性、全域變數
- 箭頭指向 被擁有者
表示法
- 直線 + 結合方向
- 箭頭 (常用)
數量
Example 例子
-
"人"有"住址"的變數
-
"車子"有"買車的人"的變數
比較:Dependency, Association
Dependency | Association | |
---|---|---|
概念 | A uses a B | A has a C |
A 使用 B | A 有 C | |
箭頭 | 虛線 | 實線 |
例子 | "課程表"使用"課程"的參數 | "人"有"住址"的變數 |
Aggregation 聚合
- 定義
- 聚合,弱 整體與部分的關係
- 整體可以脫離部分而單獨存在
- 整體與部分具有各自的生命周期
- 菱形指向 整體
Example 例子
-
"車子"擁有這些零件:“引擎”、“車門”、“輪子”
-
"學校"擁有"學生"們
Composition 組合
- 定義
- 組合,強 整體與部分的關係
- 整體不可脫離部分而存在
- 整體的生命周期結束也就意味著部分的生命周期結束
- 菱形指向 整體
Example 例子
-
"手指"是"手"的一部份
-
"員工"們是"公司"的一部份
比較:Aggregation, Composition
Aggregation | Composition | |
---|---|---|
概念 | A owns a B | C is a part of A |
A 擁有 B | C 是 A 的一部份 | |
菱形 | 空心 | 實心 |
例子 | "學校"擁有"學生"們 | "員工"們是"公司"的一部份 |
學生畢業離開學校,學生、學校還是單獨存在 | 員工離開公司,員工存在,但公司可能就不存在了 |
Realization / Implementation 實現 / 實作
- 定義
- 實作interface介面
- 箭頭指向 interface
Example 例子
-
“現金”、“信用卡"都要實作"付款系統”
-
JSP
Generalization / Inheritance 泛化 / 繼承
- 定義
- 繼承關係
- 箭頭指向 父類別
Example 例子
-
“學生”、“教授"都是"人”
-
Java class
比較:Realization, Generalization
Realization | Generalization | |
---|---|---|
概念 | B implements A | C extend A |
B 實作 A | C 繼承自 A | |
箭頭 | 虛線 | 實線 |
例子 | “現金”、“信用卡"都要實作"付款系統” | “學生”、“教授"都是"人” |
總整理、比較
Coupling 耦合度
- Dependency < Association < Aggregation < Composition < Realization/Implementation = Generalization/Inheritance
Table 表格
概念 | 符號 | |||
---|---|---|---|---|
Dependency | A uses a B | 使用 | 參數、回傳 | AB |
Association | A has a B | 有 | 全域變數 | AB |
Aggregation | A owns a B | 擁有 | 整體、部分 | AB |
Composition | B is a part of A | 一部分 | 整體、部分 | AB |
Realization | B implements A | 實作 | 介面 | BA |
Generalization | B extends A | 繼承 | 父子類別 | BA |
Reference 參考資料
- Relationships:https://creately.com/blog/diagrams/class-diagram-relationships/
- wiki 英文版:https://en.wikipedia.org/wiki/Class_diagram
- wiki 中文版:https://zh.wikipedia.org/wiki/類別圖
- Uml class Diagram:
https://www.slideshare.net/ShubhamShah001/uml-class-diagram-46300557 - UML超新手入門(3)類別圖型 - 結合關係:http://www.codedata.com.tw/java/umltutorial-03/
- UML类之间的六大关系总结:
https://crane-yuan.github.io/2016/08/02/The-relationship-of-uml-class/ - 第9章 類別圖與物件圖:
http://web.ydu.edu.tw/~alan9956/doc100/100-02.sa/ooad-uml-chap09.pdf
讚
回覆刪除這篇大概是目前網路上最詳細的整理了 真的讚
回覆刪除讚!讚!讚!
回覆刪除謝謝整理
回覆刪除超級完整,感謝你
回覆刪除感覺在aggregation&composition的解釋怪怪的
回覆刪除應該是差異在:整體的消失是否導致部分跟著消失的意思才對?
寫的超級完整,非常感謝
回覆刪除