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