UML 類圖中的 ”關聯關係(association) “、”聚合關係(aggregation) “、”合成關係 (compostion)“ 和”依賴關係 (dependency)“ 不是很容易區分清楚。
經過認真分析個人總結如下:
關聯關係 (association):
- 關聯關係是類與類之間的聯結,它使一個類知道另一個類的屬性和方法。
- 關聯可以是雙向的,也可以是單向的。雙向的關聯可以有兩個箭頭或者沒有箭頭,單向的關聯有一個箭頭。
- 在 Java 或 c++ 中,關聯關係是通過使用成員變量來實現的。
- 關聯關係一般不需要關心另一個對象的生命週期。
聚合關係 (aggregation):
- 聚合關係是關聯關係的一種,是強的關聯關係。
- 聚合是整體和部分之間的關係,例如汽車由引擎、輪胎以及其它零件組成。
- 聚合關係也是通過成員變量來實現的。但是,關聯關係所涉及的兩個類處在同一個層次上,而聚合關係中,兩個類處於不同的層次上,一個代表整體,一個代表部分。
- 聚合關係一般需要維護被聚合對象的生命週期
合成關係 (composition):
- 合成關係是關聯關係的一種,是比聚合關係還要強的關係。
- 它要求普通的聚合關係中代表整體的對象負責代表部分的對象的生命週期。
依賴關係 (dependency):
- 依賴關係也是類與類之間的聯結
- 依賴總是單向的。
- 依賴關係在 Java 或 C++ 語言中體現爲局部變量、方法的參數或者對靜態方法的調用。