在團(tuán)隊協(xié)作過程中最常見的就是開會、開會最常用的就是圖往弓,而圖中最常見的就是流程圖、時序圖蓄氧、類圖函似,這三個圖可以清楚的描述你想解釋的內(nèi)容。學(xué)好類圖不僅僅能幫助自己更清楚的梳理業(yè)務(wù)喉童,還能提高開會效率撇寞。但是話說回來,你是否真的看懂別人畫的圖了泄朴?或者你真的會畫嗎重抖?今天就和大家一起學(xué)習(xí)一下怎么畫類圖。
上圖是我模擬出來的一個場景和大家具體說一下類圖究竟應(yīng)該怎么畫才對祖灰。圖中講的是這樣一個「故事」:
一個公司下面有很多部門钟沛,公司和部門是不可分割的。
碼農(nóng)屬于一個部門局扶,但是如果部門解散了恨统,碼農(nóng)依然依然是碼農(nóng)。
碼農(nóng)無時無刻在用手機(jī)三妈,只有工作時間才會使用 Mac畜埋。
Mac 是一種電腦,電腦是“可計算處理器”的一種實現(xiàn)畴蒲。
下面我們就逐一介紹下這些關(guān)系悠鞍。
泛化關(guān)系(generalization)
泛化關(guān)系為 is-a 的關(guān)系;兩個對象之間如果可以用 is-a 來表示模燥,就是泛化關(guān)系咖祭。
泛化關(guān)系用一條帶空心箭頭的直接表示掩宜。如圖為例, Mac 和電腦就是泛化關(guān)系么翰,通常在程序里面泛化表現(xiàn)為繼承于非抽象類牺汤。
實現(xiàn)關(guān)系(realization)
實現(xiàn)關(guān)系用一條帶空心箭頭的虛線表示。如圖為例浩嫌,電腦和可計算處理器就是實現(xiàn)關(guān)系檐迟,通常程序里面實現(xiàn)關(guān)系表現(xiàn)為繼承抽象類。比如我們平時寫的 Readable,Printable等接口的實現(xiàn)码耐。
聚合關(guān)系(aggregation)
聚合關(guān)系用一條帶空心菱形箭頭的直線表示追迟,如圖碼農(nóng)和部門就是聚合關(guān)系。與組合關(guān)系不同的是伐坏,整體和部分不是強(qiáng)依賴的怔匣,即使整體不存在了,部分仍然存在桦沉。如圖為例每瞒, 部門撤銷了,碼農(nóng)換一個工作還是碼農(nóng)嘛纯露。
組合關(guān)系(composition)
組合關(guān)系用一條帶實心菱形箭頭直線表示剿骨,與聚合關(guān)系一樣,組合關(guān)系同樣表示整體由部分構(gòu)成的關(guān)系埠褪,不同之處在于整體和部分是強(qiáng)依賴關(guān)系浓利,如果整體不存在了,部分也不復(fù)存在钞速。如圖為例贷掖,如果公司倒閉了,那么何來部門呢渴语?
關(guān)聯(lián)關(guān)系(association)
關(guān)聯(lián)關(guān)系通常用一條直線表示苹威,當(dāng)然如果需要標(biāo)明方向可以添加箭頭。它是描書不同的類對象之間的關(guān)系驾凶,通常不會隨著狀態(tài)的變化而變化牙甫,可以理解為被關(guān)聯(lián)者屬于關(guān)聯(lián)者的一部分。如圖為例调违,手機(jī)就是碼農(nóng)的一部分窟哺,不會因為他上班與否而變化所屬關(guān)系。通常情況在程序里面以類變量的方式表現(xiàn)技肩。
依賴關(guān)系(dependency)
依賴關(guān)系是用一套帶箭頭的虛線表示且轨,他通常描述一個對象在運行期間會用到另一個對象的關(guān)系。如圖為例碼農(nóng)只有在工作的時候才會用到 Mac 電腦,所以這種依賴關(guān)系是依賴于運行狀態(tài)的旋奢。通常情況下是在程序里面通過構(gòu)造函數(shù)阿蝶、形參等體現(xiàn)。
推薦幾個UML工具
PlantUML黄绩、starUML2.0、JUDE-Community
ProcessOn玷过、STARUML爽丹、VISIO
Enterprise Architect、LucidChart
Draw.io辛蚊、百度腦圖粤蝎、Astah
喜歡哪一個請自取袋马!
回顧總結(jié)
到這里我們再次回顧一下開篇的圖片是不是更加理解里面的連線了初澎?所以我們在繪圖過程中一定要非常注意這個線和箭。
不過話說回來虑凛,死記硬背這些東西確實很難碑宴,于是我自己想了一個打油詩,幫助自己來記憶桑谍,你也可以來試一下延柠。
實箭泛化虛實現(xiàn)
虛線依賴實關(guān)聯(lián)
空菱聚合實組合
項目溝通圖常見
所以你學(xué)會了嗎?