Contents

UML: Generailzation, Realization, Association, Dependency, Aggregation, Composition

UML: Generailzation, Realization, Association, Dependency, Aggregation, Composition

筆記記錄如何用UML標示物件導向 各種關係的強弱順序為 泛化=實現>組合>聚集>關聯>依賴

箭頭

/uml/images/UML.jpg

比較表

/uml/images/UML-Table.jpg

範例

/uml/images/UML-example.jpg

綜合比較

來源 : https://www.cnblogs.com/scevecn/archive/2016/07/12/5663369.html

1.聚集與組合

聚集 - 雁群與大雁 組合 - 鳥與翅膀

  1. 聚集與組合都是一種結合關係,只是額外具有整體-部分的意涵。
  2. 部件的生命周期不同 聚集關係中,整件不會擁有部件的生命周期,所以整件刪除時,部件不會被刪除。再者多個整件可以共用同一個部件。 組合關係中,整件擁有部件的生命周期,所以整件刪除時,部件一定會跟著刪除。而且多個整件不可以同時間共用同一個部件。
  3. 聚集關係是"has-a"關係, 組合關係是"contains-a"關係。

2.關聯和聚集

關聯 - 企鵝與氣候

  1. 表現在代碼層面,和關聯關係是一致的,只能從語義級別來區分。
  2. 關聯和聚集的區別主要在語義上,關聯的兩個對象之間一般是平等的,例如你是我的朋友,聚集則一般不是平等的。
  3. 關聯是一種結構化的關係,指一種對象和另一種對象有聯繫。
  4. 關聯和聚集是視問題域而定的,例如在關心汽車的領域裡, 輪胎是一定要組合在汽車類中的,因為它離開了汽車就沒有意義了。 但是在賣輪胎的店鋪業務裡,就算輪胎離開了汽車,它也是有意義的,這就可以用聚集了。

3.關聯和依賴

依賴 - 動物與氧氣

  1. 關聯關係中,體現的是兩個類、或者類與介面之間語義級別的一種強依賴關係,比如我和我的朋友;這種關係比依賴更強、不存在依賴關係的偶然性、關係也不是臨時性的,一般是長期性的,而且雙方的關係一般是平等的。
  2. 依賴關係中,可以簡單的理解,就是一個類A使用到了另一個類B,而這種使用關係是具有偶然性的、臨時性的、非常弱的,但是B類的變化會影響到A。

4.綜合比較

這幾種關係都是語義級別的,所以從代碼層面並不能完全區分各種關係;但總的來說,後幾種關係所表現的強弱程度依次為: 泛化=實現>組合>聚集>關聯>依賴

Reference