UML定義的關係主要有:泛化、實現、依賴、關聯、聚合、組合,這六種關係緊密程度依次增強,分別看一下設計
概念:泛化是一種通常與特殊、通常與具體之間關係的描述,具體描述創建在通常描述的基礎之上,並對其進行了擴展。在程序中是經過繼承類實現的。好比狗是對動物的具體描述,在面向對象設計的時候通常把狗設計爲動物的子類。3d
表示方法:空心三角形箭頭的實線,子類指向父類對象
概念:實現是一種類與接口的關係,表示類是接口全部特徵和行爲的實現,在程序中通常經過類實現接口來描述blog
表示方法:空心三角形箭頭的虛線,實現類指向接口繼承
概念:是一種使用的關係,即一個類的實現須要另外一個類的協助,因此要儘可能不使用雙向的互相依賴,在程序中通常表現爲類A中的方法須要類B的實例做爲其參數或者變量,而類A自己並不須要引用類B的實例做爲其成員變量。接口
表示方法:虛線箭頭,類A指向類B。生命週期
概念:表示類與類之間的聯接,它使一個類知道另外一個類的屬性和方法,這種關係比依賴更強、不存在依賴關係的偶然性、關係也不是臨時性的,通常是長期性的,在程序中被關聯類B以類屬性的形式出如今關聯類A中,也多是關聯類A引用了一個類型爲被關聯類B的全局變量get
表示方法:實線箭頭,類A指向類Bit
概念:聚合關聯關係的一種特例,是強的關聯關係。聚合是總體和個體之間的關係,即has-a的關係,總體與個體能夠具備各自的生命週期,部分能夠屬於多個總體對象,也能夠爲多個總體對象共享。程序中聚合和關聯關係是一致的,只能從語義級別來區分;基礎
表示方法:尾部爲空心菱形的實線箭頭(也能夠沒箭頭),類A指向類B
概念:組合也是關聯關係的一種特例。組合是一種總體與部分的關係,即contains-a的關係,比聚合更強。部分與總體的生命週期一致,總體的生命週期結束也就意味着部分的生命週期結束,組合關係不能共享。程序中組合和關聯關係是一致的,只能從語義級別來區分。
表示方法:尾部爲實心菱形的實現箭頭(也能夠沒箭頭),類A指向類B
各類關係的強弱順序:
泛化 = 實現 > 組合 > 聚合 > 關聯 > 依賴
下面這張UML圖,比較形象地展現了各類類圖關係: