一直以來,對uml的東西總是模稜兩可,對於類圖中的聚合和組合,知道兩種的區別,但過一段時間後總是分不清兩者誰是誰,唉,主要怪自己的語文沒有學好,呵呵!
其實,對於聚合和組合,如果換成英文,就很好理解了:聚合就是「has-a」,組合就是「contains-a」。
聚合是空心的菱形;組合是實心的菱形(這個比較好理解,實心的肯定比空心的紮實,哈哈)。
摘錄一段話:
聚合和組合的區別在於:聚合關係是「has-a」關係,組合關係是「contains-a」關係;聚合關係表示整體與部分的關係比較弱,而組合比較強;聚合關係中代表部分事物的物件與代表聚合事物的物件的生存期無關,一旦刪除了聚合物件不一定就刪除了代表部分事物的物件。組合中一旦刪除了組合物件,同時也就刪除了代表部分事物的物件。
我們用淺顯的例子來說明聚合和組合的區別。「國破家亡」,國滅了,家自然也沒有了,「國」和「家」顯然也是組合關係。而相反的,計算機和它的外設之間就是聚合關係,因為它們之間的關係相對鬆散,計算機沒了,外設還可以獨立存在,還可以接在別的計算機上。在聚合關係中,部分可以獨立於聚合而存在,部分的所有權也可以由幾個聚合來共享,比如印表機就可以在辦公室內被廣大同事共用。
UML中聚合和組合的區別
聚合 聚合其實是關聯的乙個特例,表示了兩個物件之間 part of 部分 整體 的關係,是一種弱關聯,部分的生命週期可以超越整體。在uml中,用整體端有空心菱形箭頭的雙向關聯修飾聚合。聚合的示例如下圖 組合 組合其實是一種強形式的聚合,它具有強的擁有關係,整體與部分的生命週期是一致的。部分 生存在整...
UML中的聯絡 聚合與組合的區別
uml中的聯絡 association 聚合 aggregation 和組合 composition 三個概念很相似,也很難理解。今天看到這篇文章解釋得很清楚,所以在這裡轉一下,希望能對需要的人有所幫助。聯絡 聯絡 association 表明某個物件可以向另乙個物件通過某種方式傳送訊息。傳送訊息的...
DDD中的聚合和UML中的聚合以及組合的關係
uml 聚合關係 成員物件是整體的一部分,但是成員物件可以脫離整體物件獨立存在。如汽車 car 與引擎 engine 輪胎 wheel 車燈 light 之間的關係為聚合關係,引擎 輪胎 車燈可以脫離車而存在,比如把乙個引擎換到另乙個汽車上也可以。組合關係 也表示的是一種整體和部分的關係,但是在組合...