每一個(gè)開發(fā)人員都應(yīng)該懂的 UML 規(guī)范
掃描二維碼
隨時(shí)隨地手機(jī)看文章
來自:碼匠筆記
在團(tuán)隊(duì)協(xié)作過程中最常見的就是開會(huì)、開會(huì)最常用的就是圖,而圖中最常見的就是流程圖、時(shí)序圖、類圖,這三個(gè)圖可以清楚的描述你想解釋的內(nèi)容。學(xué)好類圖不僅僅能幫助自己更清楚的梳理業(yè)務(wù),還能提高開會(huì)效率。但是話說回來,你是否真的看懂別人畫的圖了?或者你真的會(huì)畫嗎?今天就和大家一起學(xué)習(xí)一下怎么畫類圖。
上圖是我模擬出來的一個(gè)場景和大家具體說一下類圖究竟應(yīng)該怎么畫才對(duì)。圖中講的是這樣一個(gè)「故事」:
一個(gè)公司下面有很多部門,公司和部門是不可分割的。
碼農(nóng)屬于一個(gè)部門,但是如果部門解散了,碼農(nóng)依然依然是碼農(nóng)。
碼農(nóng)無時(shí)無刻在用手機(jī),只有工作時(shí)間才會(huì)使用 Mac。
Mac 是一種電腦,電腦是“可計(jì)算處理器”的一種實(shí)現(xiàn)。
下面我們就逐一介紹下這些關(guān)系。
泛化關(guān)系(generalization)
泛化關(guān)系為 is-a 的關(guān)系;兩個(gè)對(duì)象之間如果可以用 is-a 來表示,就是泛化關(guān)系。
泛化關(guān)系用一條帶空心箭頭的直接表示。如圖為例, Mac 和電腦就是泛化關(guān)系,通常在程序里面泛化表現(xiàn)為繼承于非抽象類。
實(shí)現(xiàn)關(guān)系(realization)
實(shí)現(xiàn)關(guān)系用一條帶空心箭頭的虛線表示。如圖為例,電腦和可計(jì)算處理器就是實(shí)現(xiàn)關(guān)系,通常程序里面實(shí)現(xiàn)關(guān)系表現(xiàn)為繼承抽象類。比如我們平時(shí)寫的 Readable,Printable等接口的實(shí)現(xiàn)。
聚合關(guān)系(aggregation)
聚合關(guān)系用一條帶空心菱形箭頭的直線表示,如圖碼農(nóng)和部門就是聚合關(guān)系。與組合關(guān)系不同的是,整體和部分不是強(qiáng)依賴的,即使整體不存在了,部分仍然存在。如圖為例, 部門撤銷了,碼農(nóng)換一個(gè)工作還是碼農(nóng)嘛。
組合關(guān)系(composition)
組合關(guān)系用一條帶實(shí)心菱形箭頭直線表示,與聚合關(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)明方向可以添加箭頭。它是描書不同的類對(duì)象之間的關(guān)系,通常不會(huì)隨著狀態(tài)的變化而變化,可以理解為被關(guān)聯(lián)者屬于關(guān)聯(lián)者的一部分。如圖為例,手機(jī)就是碼農(nóng)的一部分,不會(huì)因?yàn)樗习嗯c否而變化所屬關(guān)系。通常情況在程序里面以類變量的方式表現(xiàn)。
依賴關(guān)系(dependency)
依賴關(guān)系是用一套帶箭頭的虛線表示,他通常描述一個(gè)對(duì)象在運(yùn)行期間會(huì)用到另一個(gè)對(duì)象的關(guān)系。如圖為例碼農(nóng)只有在工作的時(shí)候才會(huì)用到 Mac 電腦,所以這種依賴關(guān)系是依賴于運(yùn)行狀態(tài)的。通常情況下是在程序里面通過構(gòu)造函數(shù)、形參等體現(xiàn)。
回顧總結(jié)
到這里我們再次回顧一下開篇的圖片是不是更加理解里面的連線了?所以我們在繪圖過程中一定要非常注意這個(gè)線和箭。
不過話說回來,死記硬背這些東西確實(shí)很難,于是我自己想了一個(gè)打油詩,幫助自己來記憶,你也可以來試一下。
實(shí)箭泛化虛實(shí)現(xiàn)
虛線依賴實(shí)關(guān)聯(lián)
空菱聚合實(shí)組合
項(xiàng)目溝通圖常見
所以你學(xué)會(huì)了嗎?
特別推薦一個(gè)分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長按關(guān)注一下:
長按訂閱更多精彩▼
如有收獲,點(diǎn)個(gè)在看,誠摯感謝
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場,如有問題,請聯(lián)系我們,謝謝!