UML把類之間的關係分爲以下幾種:
1. 關聯(Association)
類A和類B的實例之間存在着特定的對應關係。用一條實線來表示。
例如圖書館的書與讀者之間的關係。
註釋:(0..*)表示一個讀者可以借閱多本書,(0..1)表示一本書只能借給你個讀者
2.依賴(Dependency)。
當類A(客戶)使用類B(服務者)的某個方法去完成某個功能,這種使用關係具有臨時性,偶然性,
當類B的發生變化時,類A也會發生變化,這時我們稱A與B之間的關係是依賴關係。
總而言之,他表示這樣一種情形,提供者的某些變化會要求或指示依賴關係中客戶的變化。
根據這個定義,關聯和泛化都是依賴關係,但是它們有更特別的語義,故他們有自己的名字和詳細的語義。
依賴關係用虛線箭頭表示。
例如人騎自行車,人與自行車車之間的關係就屬於依賴關係。 因爲人使用自行車,人也可以使用汽車,
所以說人與自行車之間的關係具有臨時性,自行車出毛病了也會影響到人的行爲(騎車這個行爲)。
3. 聚合(Aggregation)
聚合體現的是整體與部分,擁有的關係,即has-a的關係,此時整體與部分之間是可分離的,
他們可以有各自的生命週期,部分可以屬於多個整體對象,也可以爲多個整體對象共享,比如計算機
與CPU,圖書館與圖書的關係等,表現在代碼層面上,和關聯關係是一致的,只能從語義級別來做區分。
符號用帶空心菱形箭頭的實線表示
圖例:
4.組合(Composite)
組合同聚合一樣,也體現整體與部分之間的關係,也是關聯關係的一種特例,它體現的是contains-a的
關係,這種關係比聚合更加強,亦稱爲強聚合。組合的整體和部分之間是不可分的,整體的生命週期結束也
就意味着部分的生命週期結束。比如人和人的大腦;在代碼層面,和關聯關係是一致的,只能從語義級別來區分;
圖例:
5.泛化(Generalization)
泛化也就是繼承,主要是指一個類(子類,子接口)繼承了另外一個類(父類,父接口),並可以增加新功能。繼承應該是類與類,
接口與接口之間最常見的關係。符號是用帶實線的空心三角符
例圖:類ClassB繼承了類ClassA,接口InterfaceB繼承了接口InterfaceA.
6. 實現(Realization)
主要指的是一個類去實現一個接口的功能。 用帶空心三角符的虛線表示。
例圖:類ClassA實現接口InterfaceA