依賴 關聯 組合 聚合

2022-05-05 10:36:13 字數 1129 閱讀 9342

聚合:指的是整體與部分的關係。通常在定義乙個整體類後,再去分析這個整體類的組成

結構。從而找出一些組成類,該整體類和組成類之間就形成了聚合關係。例如乙個航母編

隊包括海空母艦、驅護艦艇、艦載飛機及核動力攻擊潛艇等。需求描述中「包含」、「組

成」、「分為…部分」等詞常意味著聚合關係。

組合:也表示類之間整體和部分的關係,但是組合關係中部分和整體具有統一的生存期。

一旦整體物件不存在,部分物件也將不存在。部分物件與整體物件之間具有共生死的關係

。聚合和組合的區別在於:聚合關係是「has-a」關係,組合關係是「contains-a」關係;聚

合關係表示整體與部分的關係比較弱,而組合比較強;聚合關係中代表部分事物的物件與

代表聚合事物的物件的生存期無關,一旦刪除了聚合物件不一定就刪除了代表部分事物的

物件。組合中一旦刪除了組合物件,同時也就刪除了代表部分事物的物件。

我們用淺顯的例子來說明聚合和組合的區別。「國破家亡」,國滅了,家自然也沒有了,

「國」和「家」顯然也是組合關係。而相反的,計算機和它的外設之間就是聚合關係,因

為它們之間的關係相對鬆散,計算機沒了,外設還可以獨立存在,還可以接在別的計算機

上。在聚合關係中,部分可以獨立於聚合而存在,部分的所有權也可以由幾個聚合來共享

,比如印表機就可以在辦公室內被廣大同事共用

關聯和聚合的區別主要在語義上,關聯的兩個物件之間一般是平等的,例如你是我的朋友

,聚合則一般不是平等的,例如乙個公司包含了很多員工,其實現上是差不多的。聚合和

組合的區別則在語義和實現上都有差別,組合的兩個物件之間其生命期有很大的關聯,被

組合的物件是在組合物件建立的同時或者建立之後建立,在組合物件銷毀之前銷毀。一般

來說被組合物件不能脫離組合物件獨立存在,而且也只能屬於乙個組合物件,例如乙個文

檔的版本,必須依賴於文件的存在,也只能屬於乙個文件。聚合則不一樣,被聚合的物件

可以屬於多個聚合物件,例如乙個員工可能可以屬於多個公司。

我想舉個通俗的例子。

你和你的心臟之間是composition關係(心臟只屬於你自己)

你和你買的書之間是aggregation關係(書可能是別人的)

你和你的朋友之間是association關係

關聯 組合 聚合 依賴關係比較

類之間的關係 1 種類 generalization 泛化 dependency 依賴關係 association 關聯關係 aggregation 聚合關係 composition 合成關係 2 其中aggregation 聚合關係 composition 合成關係 屬於association 關...

關聯 組合 聚合 依賴關係比較

類之間的關係 1 種類 generalization 泛化 dependency 依賴關係 association 關聯關係 aggregation 聚合關係 composition 合成關係 2 其中aggregation 聚合關係 composition 合成關係 屬於association 關...

關聯 組合 聚合 依賴關係比較

類之間的關係 1 種類 generalization 泛化 dependency 依賴關係 association 關聯關係 aggregation 聚合關係 composition 合成關係 2 其中aggregation 聚合關係 composition 合成關係 屬於association 關...