2021-11-19 00:00:52
UML類圖:
- 用於描述系統中的類(對象)本身的組成和類(對象)之間的各種靜態關系。
- 類之間的關系:
依賴、泛化(繼承)、實現、關聯、聚合與組合
- 縱向關系:繼承(泛化),實現(實現)-------類與類、或者類與接口之間
- 橫向/引用關系:組合、聚合、關聯、依賴-------類與類、或者類與接口之間
- 從強到弱(這四種關系所表現的強弱):組合>聚合>關聯>依賴
類圖關系概述:
1、泛化關系
2、實現關系
3、依賴關系
4、關聯關系
4.1、一對一的關系
4.2、單向一對多關系
4.3、單向多對一關系
4.4、雙向一對多、多對一關系
4.5、單向多對多關系
5、聚合關系
6、組合關系
1、泛化關系(generalization)
- 指的是一個類(稱為子類、子接口)繼承(extends)另外的一個類(稱為父類、父接口)的功能,並可以增加自己額外的一些功能,繼承是類與類或者接口與接口之間最常見的關系。
- 在java中此類通過關鍵字extends明確標識。
- 在UML類圖中,繼承經常使用 空心三角+實線 表示。
接口之間的泛化關系:
類之間的泛化關系:
2、實現關系(realization)
java中接口(interface)詳解_sun_shine56的博客-CSDN博客
- 實現關系:指的是一個class類實現interface接口(可以實現多個接口)的功能;實現是類與接口之間最常見的關系;
- 在java中此關系通過關鍵字implements明確標識。
- 在UML類圖中,實現通常使用 空心三角+虛線 表示。
3、依賴關系(dependent)
- 依賴關系:指的是類與類之間的聯接。依賴關系表示:一個類依賴於另一個類的定義。一般而言依賴關系在java語言中體現為成員變量、局域變量、方法的形參、方法返回值,或者對靜態方法的調用。
- 表示一個A類依賴於B類的定義,如果A對象離開B對象,A對象就不能正常編譯,則A對象依賴於B對象(A類中使用了B對象)。
- 比如:某個人要過河,需要借用一條船,此時人與船之間的關系就是依賴;在代碼層面,類B作為參數被類A在某個method方法中使用。
- 在UML類圖中,以來通常用虛線表示
圖中出現了3種依賴情況:
1:成員變量,這也是關聯關系
2:方法參數
3:方法內的局部變量
4、關聯關系(association)
- 關聯關系:指的是類與類之間的聯接,它使一個類知道另一個類的屬性和方法(實體變量體現)。A類依賴於B對象,並且把B作為A的一個成員變量,則A和B存在關聯關系。
- 關聯可以是雙向的,也可以是單向的。兩個類之前是一個層次的,不存在整體和部分的關系。
- 在UML類圖中。關聯常用 實線箭頭 表示。
按照多重性分類:
一對一:一個A對象屬於一個B對象,一個B對象屬於一個A對象。
一對多:一個A對象包含很多個B對象。
多對一:多個A對象屬於一個B對象,並且多個A對象中的每個A對象只能屬於一個B對象。
多對多:一個A對象屬於多個B對象,一個B對象屬於多個A對象。
按導航性分類:
單向:只能從A通過屬性導航到B,B不能導航到A。
雙向:A可以通過屬性導航到B,B也可以通過屬性導航到A。
關聯關系的判斷方法:
判斷都是從對象的實例上面來看的
判斷關系必須確定一對屬性
判斷關系必須確定具體需求
4.1、一對一的關系
單向:java類設計
1 public class QQNumber { 2 private QQZone zone; 3 } 4 5 public class QQZone{ 6 }
雙向:java類設計
1 public class QQNumber { 2 private QQZone zone; 3 } 4 5 public class QQZone { 6 private QQNumber number; 7 }
4.2、單向的一對多
4.3、單向多對一
4.4、雙向一對多、多對一
4.5、單向多對多
5、聚合關系(aggregtion)
- 聚合關系:關系的一種特例,它體現的是整體與部分,是一種“弱擁有”的關系,即has-a的關系。聚合是整體與部分之間的關系。
- 例如,汽車類與引擎類、輪胎類,以及其他的零件類之間的關系---整體和個體的關系。
- 與關聯關系一樣,聚合關系也是通過實例變量實現的。但是關聯關系多涉及的兩個類是處在同一層次上的,而在聚合關系中,兩個類是處在不平等層次上的,一個代表整體,另一個代表部分。
- 聚合關系表示整體和個體的關系,整體和個體可以相互獨立存在,一定是有兩個模塊分別管理整體和個體。
- 在UML類圖中,聚合通常使用 空心菱形+實線箭頭 表示。
6、組合關系(composition)
- 組合關系:是關聯關系的一種特例,它體現的是一種contains-a(包含的關系,這種關系比聚合更強,也稱為強融合)。
- 它要求普通的聚合關系中代表整體的對象負責代表部分對象的生命周期,組合關系是不能共享的。代表整體的對象需要負責保持部分對象和存活。在一些情況下將負責代表部分的湮滅掉。代表整體的對象可以將代表部分的對象傳遞給另一個對象,由后者負責對此對象的生命周期。換言之,代表部分的對象在每一個時刻只能與一個對象發生組合關系,由后者排他地負責生命周期。部分和整體的生命周期一樣。
- 整體和個體都不能獨立存在,一定是在一個模塊中同時管理整體和個體,生命周期必須相同(級聯)。
- 在UML類圖中,組合通常使用 實線菱形+實線箭頭 表示。