UML類圖
類圖是軟件工程的統(tǒng)一建模語言一種靜態(tài)結(jié)構(gòu)圖,描述了系統(tǒng)的類集合沦泌,類的屬性和類之間的關(guān)系瞄勾。在學(xué)習(xí)面向?qū)ο缶幊袒蛘咴O(shè)計模式時费奸,免不了是要和類圖打交道。
一进陡、工具
推薦Microsoft Visio货邓,理由是精美,好用四濒。當(dāng)然也有其他流程圖軟件,全看個人喜好职辨。 如何使用盗蟆?Visio搜索UML類圖模板
二、箭頭符號所代表的含義
三舒裤、類的成員
- 最上面是類名稱
- 中間部分包含類的屬性
- 底部部分包含類的方法
+ 公共
- 私有
# 保護
~ 包
static 靜態(tài)
四喳资、類與類的關(guān)系
依賴關(guān)系
依賴關(guān)系(Dependency)可以理解為一個類A使用到了另一個類B,類B的變化會影響它的依賴者類A腾供,用帶燕尾箭頭的虛線表示
泛化關(guān)系
泛化(Generalization)仆邓,即繼承的反方向鲜滩,指的是一個類(稱為父類、父接口)具有另外的一個(或一些)類(稱為子類节值、子接口)的共有功能徙硅。子類可視為其父類的特例,并可以增加新功能搞疗。用帶空心三角形箭頭的實線表示嗓蘑。
實現(xiàn)關(guān)系
實現(xiàn)(Realization)指的是一個class類實現(xiàn)interface接口(可以是多個)的功能;用帶空心三角形箭頭的虛線表示匿乃。
聚合關(guān)系
聚合(Aggregate)是表示整體與部分的一類特殊的關(guān)聯(lián)關(guān)系桩皿,是“弱”的包含(" ... owns a ..." )關(guān)系,成分類可以不依靠聚合類而單獨存在幢炸,可以具有各自的生命周期泄隔,部分可以屬于多個整體對象,也可以為多個整體對象共享(sharable)宛徊。例如佛嬉,大雁與雁群。再例如教授與課程就是一種聚合關(guān)系岩调。又例如圖書館包含(owns a) 學(xué)生和書籍巷燥。即使沒有圖書館,學(xué)生亦可以存在号枕。
組合關(guān)系
組成(Composition)關(guān)系缰揪,是一類“強”的整體與部分的包含關(guān)系(" ... is a part of ...")。成分類必須依靠合成類而存在葱淳。整體與部分是不可分的钝腺,整體的生命周期結(jié)束也就意味著部分的生命周期結(jié)束。合成類別完全擁有成分類別赞厕,負責(zé)創(chuàng)建艳狐、銷毀成分類別。例如汽車與化油器皿桑,又例如公司與公司部門就是一種組成關(guān)系毫目。圖形以實心的菱形箭尾與實線表示。
關(guān)聯(lián)關(guān)系
最常見的時雙向關(guān)聯(lián)和單向關(guān)聯(lián)诲侮。例如人訂閱了一份報紙镀虐,就是雙向關(guān)聯(lián)。某個對象會長期的持有另一個對象的引用沟绪,關(guān)聯(lián)的兩個對象彼此間沒有任何強制性的約束刮便,只要二者同意,可以隨時解除關(guān)系或是進行關(guān)聯(lián)绽慈,它們在生命期問題上沒有任何約定恨旱。被關(guān)聯(lián)的對象還可以再被別的對象關(guān)聯(lián)辈毯,所以關(guān)聯(lián)是可以共享的。 在代碼層面上搜贤,被關(guān)聯(lián)類以類屬性的形式出現(xiàn)在關(guān)聯(lián)類中谆沃,也可能是關(guān)聯(lián)類引用了一個類型為被關(guān)聯(lián)類的全局變量。(箭頭從使用類指向被關(guān)聯(lián)的類)