聚合
聚合其實是關聯的一個特例,表示了兩個對象之間“part of(部分-整體)”的關系,是一種弱關聯,部分的生命周期可以超越整體。在UML中,用整體端有空心菱形箭頭的雙向關聯修飾聚合。聚合的示例如下圖:
組合
組合其實是一種強形式的聚合,它具有強的擁有關系,整體與部分的生命周期是一致的。“部分”生存在整體中,它們與“整體”一起消亡。
“部分”對象依賴於“整體”對象,這種依賴性表現在兩個方面:
第一、“部分”對象一次只能屬於一個組合對象;第二、當組合對象銷毀時,它的所有從屬部分必須同時銷毀。
整體的重數必須是0或1。“部分”不能在整體間進行共享。在UML中,用整體端有實心菱形箭頭的雙向關聯修飾組合。
聚合的示例如下圖:
上圖中,郵件和它的標題及正文之間的關系作為組合關系建模可能是合理的,因為一旦郵件被刪除,就既不存在標題,也不存在正文體了,而它們存在時屬於唯一的一個郵件。而郵件與附件之間的關系不太可能是用組合恰當的建模,因為在同一時間,同一個附件可以屬於多個郵件,其次,很有可能附件可以保存,因此它們的生命周期將超過所附屬的郵件的生命周期。