類圖--1、類圖關係
阿新 • • 發佈:2021-11-19
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類圖中,組合通常使用 實線菱形+實線箭頭 表示。