UML Class Diagram
UML class diagram 只是個概觀,不會說明所有細節(例如如何實作),可以為需要建立的 class 進行 modeling。
用一張圖解釋:

繼承
1 | class Parent |
實作(implement)
1 | interface Interface |
class 間的關係
抽象上來看 class 之間的關係,程式語言裡不見得有對應的語法,但是釐清抽象上的關係有助寫 code。只要對系統來說是合理的,class 間的關係可能因為系統的演進而改變。
關聯強度:composition > aggregation > association
Association
class 間有關係但關聯性較弱。
1 | class Foo |
class Foo
知道 class Bar
Aggregation
class 間是 has a 的關係。class A 包含 class B,但 B 不是 A 的一部分。
main object 不負責 composed object 的 create 及 destroy,composed object 可以獨立於 main object 之外。例如車子跟輪胎間的關係(Car has a Tire),輪胎可以獨立於車子之外(可以從車子上拆下來)。
UML 以空心菱形表示:
1 | Car o-right- Tire |
Composition
class 間是 own 的關係。(碎念:own 跟 has 根本沒辦法用中文區分…)
main object own composed object.
composed object 是 main object 的一部分(a part of),composed object 不會獨立存在於 main object 之外。main object 負責 composed object 的 create 及 destroy,main object destroy 時 composed object 也會 destroy。例如生物跟細胞間的關係(Animal owns Cell)。
UML 以實心菱形表示:
1 | class Animal |
composition 跟 aggregation 最大的不同在於 composed object 的生命週期是否與 main object 有關。
Dependency
class 間是依賴關係時,UML 以虛線箭頭表示:
1 | class Animal |