當(dāng)前位置:首頁 > 公眾號(hào)精選 > 架構(gòu)師社區(qū)
[導(dǎo)讀]來自:碼匠筆記 在團(tuán)隊(duì)協(xié)作過程中最常見的就是開會(huì)、開會(huì)最常用的就是圖,而圖中最常見的就是流程圖、時(shí)序圖、類圖,這三個(gè)圖可以清楚的描述你想解釋的內(nèi)容。學(xué)好類圖不僅僅能幫助自己更清楚的梳理業(yè)務(wù),還能提高開會(huì)效率。但是話說回來,你是否真的看懂別人

每一個(gè)開發(fā)人員都應(yīng)該懂的 UML 規(guī)范

來自:碼匠筆記


在團(tuán)隊(duì)協(xié)作過程中最常見的就是開會(huì)、開會(huì)最常用的就是圖,而圖中最常見的就是流程圖、時(shí)序圖、類圖,這三個(gè)圖可以清楚的描述你想解釋的內(nèi)容。學(xué)好類圖不僅僅能幫助自己更清楚的梳理業(yè)務(wù),還能提高開會(huì)效率。但是話說回來,你是否真的看懂別人畫的圖了?或者你真的會(huì)畫嗎?今天就和大家一起學(xué)習(xí)一下怎么畫類圖。

每一個(gè)開發(fā)人員都應(yīng)該懂的 UML 規(guī)范


上圖是我模擬出來的一個(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)系。

每一個(gè)開發(fā)人員都應(yīng)該懂的 UML 規(guī)范

泛化關(guān)系用一條帶空心箭頭的直接表示。如圖為例, Mac 和電腦就是泛化關(guān)系,通常在程序里面泛化表現(xiàn)為繼承于非抽象類。


實(shí)現(xiàn)關(guān)系(realization)

每一個(gè)開發(fā)人員都應(yīng)該懂的 UML 規(guī)范

實(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)

每一個(gè)開發(fā)人員都應(yīng)該懂的 UML 規(guī)范

聚合關(guān)系用一條帶空心菱形箭頭的直線表示,如圖碼農(nóng)和部門就是聚合關(guān)系。與組合關(guān)系不同的是,整體和部分不是強(qiáng)依賴的,即使整體不存在了,部分仍然存在。如圖為例, 部門撤銷了,碼農(nóng)換一個(gè)工作還是碼農(nóng)嘛。


組合關(guān)系(composition)

每一個(gè)開發(fā)人員都應(yīng)該懂的 UML 規(guī)范

組合關(guān)系用一條帶實(shí)心菱形箭頭直線表示,與聚合關(guān)系一樣,組合關(guān)系同樣表示整體由部分構(gòu)成的關(guān)系,不同之處在于整體和部分是強(qiáng)依賴關(guān)系,如果整體不存在了,部分也不復(fù)存在。如圖為例,如果公司倒閉了,那么何來部門呢?


關(guān)聯(lián)關(guān)系(association)

每一個(gè)開發(fā)人員都應(yīng)該懂的 UML 規(guī)范

關(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)

每一個(gè)開發(fā)人員都應(yīng)該懂的 UML 規(guī)范

依賴關(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è)線和箭。

每一個(gè)開發(fā)人員都應(yīng)該懂的 UML 規(guī)范


不過話說回來,死記硬背這些東西確實(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)注一下:

每一個(gè)開發(fā)人員都應(yīng)該懂的 UML 規(guī)范

長按訂閱更多精彩▼

每一個(gè)開發(fā)人員都應(yīng)該懂的 UML 規(guī)范

如有收獲,點(diǎn)個(gè)在看,誠摯感謝

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
關(guān)閉
關(guān)閉