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) 關聯舉例: 我與朋友
聚合舉例: 雁羣與大雁/國與家
組合舉例: 大雁與翅膀
參考: