uml定義類之間的關系主要有六種:泛化關系、實作關系、依賴關系、關聯關系、聚合關系群組合關系。下面分别學習這幾種關系。
使用帶空心三角形的實線表示。
汽車與suv之間為泛化關系:
泛化關系相當于面向對象中的繼承關系。最終代碼中,泛化關系表現為繼承非抽象類。
使用帶空心三角形的虛線表示。
最終代碼中,實作關系表現為繼承抽象類。
”車”為一個抽象概念,在現實中并無法直接用來定義對象;隻有指明具體的子類(汽車還是自行車),才可以用來定義對象:
使用帶箭頭的虛線表示。
依賴是一種最弱的橫向關系。假設a類的變化引起了b類的變化,則稱b依賴于a。表現在代碼上依賴關系一般有如下三種情況:
a類是b類中(某個方法)的局部變量。
a類是b類中某個方法的參數。
a類向b類發送消息,進而影響b類變化。
使用實線表示(可帶箭頭)。
乘車人和車票之間就是一種關聯關系;學生和學校就是一種關聯關系;
從依賴——>關聯——>聚合——>組合,可以認為是聯系逐漸加強的,組合關系最強調依賴。
使用帶空心棱形的實線表示。
聚合關系用于表示實體對象之間的關系,表示整體由部分構成的語義;例如一個部門由多個員工組成。
使用帶實心棱形的實線表示。
比如公司由多個部門組成;
相比聚合關系來說,組合關系是一種強依賴的特殊聚合關系,如果整體不存在了,則部分也不存在了;例如, 公司不存在了,部門也将不存在了,
但是聚合關系的依賴性較弱,部門不在了,員工依然存在。
以下這個類圖,類之間的關系是我們需要關注的:車的類圖結構為<<abstract>>,表示車是一個抽象類; 它有兩個繼承類:小汽車和自行車;它們之間的關系為實作關系,使用帶空心箭頭的虛線表示; 小汽車為與suv之間也是繼承關系,它們之間的關系為泛化關系,使用帶空心箭頭的實線表示; 小汽車與發動機之間是組合關系,使用帶實心箭頭的實線表示; 學生與班級之間是聚合關系,使用帶空心箭頭的實線表示; 學生與身份證之間為關聯關系,使用一根實線表示; 學生上學需要用到自行車,與自行車是一種依賴關系,使用帶箭頭的虛線表示;![]()
設計模式學習起點 UML類圖筆記參考 看懂UML類圖和時序圖