UML類圖中的幾種關係的畫法和含義

UML的類圖中,一共有以下六大關係:

泛化(Generalization), 實現(Realization), 依賴(Dependence),關聯(Association),聚合(Aggregation) ,組合(Composition)

下面結合具體的類圖來描述以下這幾種關係

泛化(Generalization)

也就是繼承:表示is-a的關係,是對象之間耦合度最大的一種關係,子類繼承父類(或者是子接口繼承父接口),在Java中使用extends關鍵字來表示,在類圖中使用帶三角箭頭的實線表示,箭頭從子類指向父類。

實現(Realization):

指的是兩個實體之間的一種合同關係,一個實體定義一個合同,而另外一個實體保證履行該合同,這就對應於Java中的一個類實現了一個接口,在Java中使用implements 關鍵字來表示,在類圖上,使用虛線 + 空心三角形的方法來表示,箭頭從實現類指向接口

依賴(Dependency)

可以簡單的理解,就是一個類A使用到了另一個類B,而這種使用關係是具有偶然性的、、臨時性的、非常弱的,但是B類的變化會影響到A;比如某人要過河,需要借用一條船,此時人與船之間的關係就是依賴;表現在代碼層面,爲類B作爲參數被類A在某個method方法中使用,或者類A引用了類B的靜態方法;在類圖上,使用虛線 + 箭頭來表示,箭頭的方向,從依賴的類指向被依賴的類

關聯(Assocation)

就是對象之間的一種依賴關係,比如客戶類和訂單類之間的關係,這種關係通常使用類的屬性表達。關聯又分爲一般關聯、聚合關聯與組合關聯. 表現在代碼層面,爲被關聯類B以類屬性的形式出現在關聯類A中,也可能是關聯類A引用了一個類型爲被關聯類B的全局變量,在類圖使用帶箭頭的實線表示,箭頭從使用類指向被關聯的類 可以是單向和雙向

聚合(Aggregation)

聚合算是關聯的一種形式,表示has-a的關係,是一種不穩定的包含關係。較強於一般關聯,有整體與局部的關係,並且沒有了整體,局部也可單獨存在。如公司和員工的關係,公司包含員工,但如果公司倒閉,員工依然可以換公司。在類圖使用空心的菱形表示,菱形在整體的那一側

組合

組合(Composition):表示contains-a的關係,是一種強烈的包含關係。組合類負責被組合類的生命週期。是一種更強的聚合關係。部分不能脫離整體存在。如公司和部門的關係,沒有了公司,部門也不能存在了;調查問卷中問題和選項的關係;訂單和訂單選項的關係。在類圖使用實心的菱形表示,菱形從局部指向整體。

多重性(Multiplicity)

用於說明組合關係中的對象的對比數量()
通常有以下符合:

1 :一個

* :零個或多個

1..* :一個或多個

0..1 :零個或一個

比如:

一個公司可能有一個或多個部門,公司和部門的關聯關係上,部門端是 1..*

一個部門只能屬於一個公司,在關聯關係上, 公司端是 1

一個公司有一個公司名稱,在公司名稱那端是 1

一個公司名稱只能屬於一個公司,在公司那端也是 1

一個公司可能有一個或者多個董事,在董事那端是 1..*

一個董事也可以在多家公司任職,所以在公司那端也是 1..*

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章