背景
小明去動物園看動物,來簡述整個UML的認知過程
基礎定義
根據上面事實,我們將了解UML類途中的幾種關系:Inheritance (繼承) ,Realization(實現),Association(關聯),Aggregation(聚合),Composition(組合),Dependency(依賴)
UML類的基本認識
在開始之前我們先認識下UML類的基本特征
對於屬性和方法前面的修飾符 - + 等,具體是一下含義
- - private 任何其他類和子類都不可訪問
- + public 可以被任何類進行訪問
- #protected 相同類或其子類存取
- ~ package/default 同一個包中
繼承
有了上面對類的基本理解,我們再看下不同實體之間的關系。
Inheritance 繼承關系
-
作用:它指定了子類如何特化父類的所有特征和行為,例如:老虎是動物的一種
-
箭頭指向:帶三角箭頭的實線,箭頭指向父類,符號用下面的表示
假設動物園有花豹、老虎、長頸鹿,分別對應Leopard、 Tiger、 Giraffe,他們有自己的名字、編號、年齡已經他們都可以吃東西,可以抽象為三個實體類
三個實體我們可以抽出一個共用的Animal父類,三個子類分別繼承 name id age.. 屬性和方法,可以用UML繼承關系表示,如下
另外,對於抽象類,我們可以類名變斜體Animal;或者類名加 <
>
關聯
Association 關聯關系
-
關聯關系:關聯關系比較簡單,比如東北虎會捕食野豬作為食物,那么老虎和野豬就是關聯關系
-
箭頭指向:關聯可以是雙向的,也可以是單向的。雙向的關聯可以有兩個箭頭或者沒有箭頭,單向的關聯有一個箭頭,帶普通箭頭的實心線,指向被擁有者
聚合
Aggregation 聚合關系
-
作用:是整體與部分的關系,並且部分可以存在於整體之外,如一群烏龜和一只烏龜之間的關系
-
箭頭指向:帶空心菱形的實心線,菱形指向整體
比如動物園中的一群烏龜,我們可以定義為Creep類,他與烏龜有關系,並且仍然可以獨立存在
組合
Composition 組合關系
-
組合關系:是整體與部分的關系,但是他是比聚合關系還要強的關系,要求普通聚合關系的整體部分的聲明周期代表部分的生命周期
-
箭頭與方向:帶實心菱形的實線,菱形指向整體
比如動物園的 Visitor Center (訪客中心),會有 Lobby (大廳) 和 Bathroom (廁所), Lobby 以及 Bathroom 與 VC之間就是組合關系,現實世界里,Lobby不可能脫離VC單獨存在,Bathroom也不可能脫離VC單獨存在
另外,VC和lobby之間,VC和bathroom之間在數量級上,也有對應的一對一、一對多等關系。
eg:
- 0..1 zero to one
- n specific number
- 0..* zero to many
- 1..* one to many
- m..n specific number range
因此,一個VC中對應一個lobby,對應至少一個bathroom
依賴
Dependency 依賴關系
-
依賴關系:是一種使用關系,盡量不要使用雙向依賴
-
箭頭與方向:帶箭頭的虛線,指向被使用者
zookeeper (動物圓管理員) 使用computer(計算機)系統管理每個屋子的溫度
總結
總結以上的關系強度 繼承>組合>聚合>關聯>依賴,我們可以看下全部的關系圖。