UML: Generailzation, Realization, Association, Dependency, Aggregation, Composition
Contents
UML: Generailzation, Realization, Association, Dependency, Aggregation, Composition
筆記記錄如何用UML標示物件導向 各種關係的強弱順序為 泛化=實現>組合>聚集>關聯>依賴
箭頭
比較表
範例
綜合比較
來源 : https://www.cnblogs.com/scevecn/archive/2016/07/12/5663369.html
1.聚集與組合
聚集 - 雁群與大雁 組合 - 鳥與翅膀
- 聚集與組合都是一種結合關係,只是額外具有整體-部分的意涵。
- 部件的生命周期不同 聚集關係中,整件不會擁有部件的生命周期,所以整件刪除時,部件不會被刪除。再者多個整件可以共用同一個部件。 組合關係中,整件擁有部件的生命周期,所以整件刪除時,部件一定會跟著刪除。而且多個整件不可以同時間共用同一個部件。
- 聚集關係是
"has-a"
關係, 組合關係是"contains-a"
關係。
2.關聯和聚集
關聯 - 企鵝與氣候
- 表現在代碼層面,和關聯關係是一致的,只能從語義級別來區分。
- 關聯和聚集的區別主要在語義上,關聯的兩個對象之間一般是平等的,例如你是我的朋友,聚集則一般不是平等的。
- 關聯是一種結構化的關係,指一種對象和另一種對象有聯繫。
- 關聯和聚集是視問題域而定的,例如在關心汽車的領域裡, 輪胎是一定要組合在汽車類中的,因為它離開了汽車就沒有意義了。 但是在賣輪胎的店鋪業務裡,就算輪胎離開了汽車,它也是有意義的,這就可以用聚集了。
3.關聯和依賴
依賴 - 動物與氧氣
- 關聯關係中,體現的是兩個類、或者類與介面之間語義級別的一種強依賴關係,比如我和我的朋友;這種關係比依賴更強、不存在依賴關係的偶然性、關係也不是臨時性的,一般是長期性的,而且雙方的關係一般是平等的。
- 依賴關係中,可以簡單的理解,就是一個類A使用到了另一個類B,而這種使用關係是具有偶然性的、臨時性的、非常弱的,但是B類的變化會影響到A。
4.綜合比較
這幾種關係都是語義級別的,所以從代碼層面並不能完全區分各種關係;但總的來說,後幾種關係所表現的強弱程度依次為: 泛化=實現>組合>聚集>關聯>依賴