UML 類圖:聚合與組合區別

組合中部分和全體脣亡齒寒的關係,有部分的存在,全體才稱之爲全體,每個實例都是其固有特性;
聚合中部分的每個實例都不是全體的固有特性,可以有千千萬萬個部分實例,只要有一個部分的實例存在,聚合關係形成的全體仍然是其本身。
聚本身就暗示了相似的、一樣的,很多相似的東西合在一起,謂之聚。
組合並不強調相似的東西合而爲一,暗示了豐富性,多個不同類型的部分組成了一個獨一無二的全體。

聚合關係(aggregation)

聚合關係用一條帶空心菱形箭頭的直線表示,如下圖表示A聚合到B上,或者說BA組成;


聚合關係用於表示實體對象之間的關係,表示整體由部分構成的語義;例如一個部門由多個員工組成;

與組合關係不同的是,整體和部分不是強依賴的,即使整體不存在了,部分仍然存在;例如, 部門撤銷了,人員不會消失,他們依然存在;

組合關係(composition)

組合關係用一條帶實心菱形箭頭直線表示,如下圖表示A組成B,或者BA組成;


與聚合關係一樣,組合關係同樣表示整體由部分構成的語義;比如公司由多個部門組成;

但組合關係是一種強依賴的特殊聚合關係,如果整體不存在了,則部分也不存在了;例如, 公司不存在了,部門也將不存在了;

菱形

首先, 菱形代表的意思就是全體 - 部分的關係。也就是說不管實心還是空心,都代表全體 - 部分 / part - of 的含義。

  • 空心,全體和部分的連接可以是寬鬆的,全體和部分可以相互脫離獨立存在。
  • 實心,全體和部分的連接是強關聯

空心菱形(聚合關係)的準確含義

UML1.3時代,空心菱形被稱爲共有聚合。即 多個全體的實例,可以共同擁有1個部分的實例 的意思。 全體和部分的連接可以是寬鬆的,全體和部分可以相互脫離獨立存在。 UML2起叫雖然稱之爲聚合,但本身的含義並未改變。

例如: 圖形擁有樣式,可以把這個認爲是全體 - 部分的關係
1個樣式實例,可以被多個圖形實例所擁有, 圖形實例也可以不擁有樣式
樣式實例也可以脫離圖形

實心菱形(組合關係)的準確含義

實心菱形裏的部分不能被其他全體實例的對象所所擁有。
1個部分實例只能被唯一1個全體實例所持有
且可以認爲部分和全體擁有一個共同的生存週期,當全體被刪除,部分也被連帶刪除。 但在全體刪除前移除部分,是可以免去連帶刪除全體。
例如: 車和輪胎,也可以認爲是全體 - 部分的關係;
1個輪胎實例,只能被1個車實例擁有
車報廢時,輪胎也跟着報廢
在車報廢前,可以將輪胎拆除,轉移到別的車下

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章