UML類圖
UML,進(jìn)階必備專業(yè)技能,看不懂UML就會(huì)看不懂那些優(yōu)秀的資料艘刚。
這里簡單整理
類之間的關(guān)系
泛化關(guān)系(generalization)
- 泛化(generalize): 一條帶空心箭頭的線表示
- 實(shí)現(xiàn)(realize) : 一條帶空心箭頭的虛線表示
泛化在Java中表現(xiàn)為繼承(extends) 蚌成,is-a
的關(guān)系
實(shí)現(xiàn)在Android中表現(xiàn)為implements
接口,或者extends
抽象類
依賴關(guān)系(dependency)
用一條帶箭頭的虛線表示晌砾;箭頭的指向?yàn)檎{(diào)用關(guān)系
簡單來說坎拐,類A用到了類B,就可以說A依賴于B
依賴關(guān)系是一種臨時(shí)性的偶然性的關(guān)系养匈,通常在運(yùn)行期間產(chǎn)生哼勇,并且隨著運(yùn)行時(shí)的變化; 依賴關(guān)系也可能發(fā)生變化
代碼中的表現(xiàn):比如方法的入?yún)⑴缓酰瑯?gòu)造方法的參數(shù)
關(guān)聯(lián)關(guān)系(association)
用一條直線表示
它描述不同類的對象之間的結(jié)構(gòu)關(guān)系积担;體現(xiàn)的是兩個(gè)類、或者類與接口之間語義級(jí)別的一種強(qiáng)依賴關(guān)系
代碼中的表現(xiàn):關(guān)聯(lián)對象通常是以成員變量的形式實(shí)現(xiàn)的
聚合關(guān)系(aggregation)
一條帶空心菱形箭頭的直線表示
聚合關(guān)系是關(guān)聯(lián)關(guān)系的特例猬仁,它用于表示實(shí)體對象之間的關(guān)系帝璧,表示整體由部分構(gòu)成的語義;是has-a
的關(guān)系湿刽;
例如一個(gè)部門由多個(gè)員工組成的烁;
與組合關(guān)系不同的是,整體和部分不是強(qiáng)依賴的诈闺,整體與部分之間是可分離的渴庆,即使整體不存在了,部分仍然存在买雾;
例如把曼, 部門撤銷了,人員不會(huì)消失漓穿,他們依然存在
組合關(guān)系(composition)
用一條帶實(shí)心菱形箭頭直線表示
組合關(guān)系是一種強(qiáng)依賴的特殊聚合關(guān)系嗤军,是contains-a
的關(guān)系,比聚合更強(qiáng)晃危,也稱為強(qiáng)聚合叙赚,如果整體不存在了,則部分也不存在
注意點(diǎn)
- 聚合跟組合其實(shí)都屬于關(guān)聯(lián)
- 關(guān)系強(qiáng)度:組合>聚合>關(guān)聯(lián)>依賴
類的方法與屬性
類可以擁有多個(gè)方法和屬性
屬性的表達(dá)方式:可見性 名稱:類型 [ = 缺省值 ]
方法的表達(dá)方式:可見性 名稱(參數(shù)列表) [ : 返回類型]
可見性:
-
+
public -
-
private -
#
protected -
~
package
示例
釋義:
ViewGroup
是一個(gè)View
僚饭,也是一個(gè)ViewParent
震叮,依賴于MotionEvent
(在onTouch(MotionEvent)
等方法)
釋義:
員工與工號(hào)相關(guān)聯(lián),員工聚合成部門鳍鸵,部門組成公司苇瓣。
部門解散了員工依然存在(所以是聚合),而公司倒閉偿乖,部門也就不存在了(所以是組合)击罪。