UML類圖中的六種關系
UML類圖中經常會用到各種箭頭和線條來表示不同類或者接口之間的關系,因此非常好的理解各個圖標的含義是很有必要的。
在邏輯設計階段可以通過EA工具將類圖搭建好,然後直接生成物理類,這樣也可以減少物理設計的工作量。
下面介紹UML中六種關系:
1. 泛化(Generalization)
概念:泛化是一種一般與特殊、一般與具體之間關系的描述,具體描述建立在一般描述的基礎之上,並對其進行了擴展。在java中用來表示繼承的關系。
表示:用實線空心三角箭頭表示。
2. 實現(Realization)
概念:實現是一種類與接口的關系,表示類是接口所有特征和行為的實現,在程序中一般通過類實現接口來描述。
表示:空心三角形箭頭的虛線,實現類指向接口
3. 依賴(Dependency)
概念:是一種使用的關系,即一個類的實現需要另一個類的協助。java中,方法參數需要傳入另一個類的對象,就表示依賴這個類。
表示:虛線箭頭
4. 關聯(Association)
概念:表示類與類之間的聯接,它使一個類知道另一個類的屬性和方法,這種關系比依賴更強、不存在依賴關系的偶然性、關系也不是臨時性的,一般是長期性的。
java中一個類的全局變量引用了另一個類,就表示關聯了這個類
表示:實線箭頭
5. 聚合(Aggregation)
概念:聚合是關聯關系的一種特例,是強的關聯關系。聚合是整體和個體之間的關系,即has-a的關系,整體與個體可以具有各自的生命周期,部分可以屬於多個整體對象,也可以為多個整體對象共享。程序中聚合和關聯關系是一致的,只能從語義級別來區分;
表示:尾部為空心菱形的實線箭頭(也可以沒箭頭)
6. 組合(Composition)
概念:組合也是關聯關系的一種特例。組合是一種整體與部分的關系,即contains-a的關系,比聚合更強。部分與整體的生命周期一致,整體的生命周期結束也就意味著部分的生命周期結束,組合關系不能共享。程序中組合和關聯關系是一致的,只能從語義級別來區分。
表示:尾部為實心菱形的實現箭頭(也可以沒箭頭)
關聯、聚合、組合之間的關系:
a) 聚合、組合都是關聯關系的一種:其關系強弱為 關聯<聚合<組合
b) 聚合關系是“has-a”關系,組合關系是“contains-a”關系;聚合關系表示整體與部分的關系比較弱,而組合比較強;
c) 聚合關系中代表部分事物的對象與代表聚合事物的對象的生存期無關,一旦刪除了聚合對象不一定就刪除了代表部分事物的對象。組合中一旦刪除了組合對象,同時也就刪除了代表部分事物的對象。
d) 關聯的兩個對象之間一般是平等的,例如你是我的朋友,聚合則一般不是平等的,例如一個公司包含了很多員工,其實現上是差不多的。
e) 關聯舉例: 我與朋友
聚合舉例: 雁群與大雁/國與家
組合舉例: 大雁與翅膀
參考:
https://blog.csdn.net/qq_17368865/article/details/79679599
https://www.cnblogs.com/alex-blog/articles/2704214.html
UML類圖中的六種關系