歡迎光臨
每天分享高質量文章

每一個開發人員都應該懂的 UML 規範

來自:碼匠筆記(微信號:majiangbiji)

在團隊協作過程中最常見的就是開會、開會最常用的就是圖,而圖中最常見的就是流程圖、時序圖、類圖,這三個圖可以清楚的描述你想解釋的內容。學好類圖不僅僅能幫助自己更清楚的梳理業務,還能提高開會效率。但是話說回來,你是否真的看懂別人畫的圖了?或者你真的會畫嗎?今天就和大家一起學習一下怎麼畫類圖。

上圖是我模擬出來的一個場景和大傢具體說一下類圖究竟應該怎麼畫才對。圖中講的是這樣一個「故事」:

一個公司下麵有很多部門,公司和部門是不可分割的。

碼農屬於一個部門,但是如果部門解散了,碼農依然依然是碼農。

碼農無時無刻在用手機,只有工作時間才會使用 Mac。

Mac 是一種電腦,電腦是“可計算處理器”的一種實現。

下麵我們就逐一介紹下這些關係。

 

泛化關係(generalization)

泛化關係為 is-a 的關係;兩個物件之間如果可以用 is-a 來表示,就是泛化關係。

泛化關係用一條帶空心箭頭的直接表示。如圖為例, Mac 和電腦就是泛化關係,通常在程式裡面泛化表現為繼承於非抽象類。

 

實現關係(realization)

實現關係用一條帶實心箭頭的虛線表示。如圖為例,電腦和可計算處理器就是實現關係,通常程式裡面實現關係表現為繼承抽象類。比如我們平時寫的 Readable,Printable等接口的實現。

 

聚合關係(aggregation)

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

 

組合關係(composition)

組合關係用一條帶實心菱形箭頭直線表示,與聚合關係一樣,組合關係同樣表示整體由部分構成的關係,不同之處在於整體和部分是強依賴關係,如果整體不存在了,部分也不復存在。如圖為例,如果公司倒閉了,那麼何來部門呢?

 

關聯關係(association)

關聯關係通常用一條直線表示,當然如果需要標明方向可以添加箭頭。它是描書不同的類物件之間的關係,通常不會隨著狀態的變化而變化,可以理解為被關聯者屬於關聯者的一部分。如圖為例,手機就是碼農的一部分,不會因為他上班與否而變化所屬關係。通常情況在程式裡面以類變數的方式表現。

 

依賴關係(dependency)

依賴關係是用一套帶箭頭的虛線表示,他通常描述一個物件在運行期間會用到另一個物件的關係。如圖為例碼農只有在工作的時候才會用到 Mac 電腦,所以這種依賴關係是依賴於運行狀態的。通常情況下是在程式裡面通過建構式、形參等體現。

回顧總結

到這裡我們再次回顧一下開篇的圖片是不是更加理解裡面的連線了?所以我們在繪圖過程中一定要非常註意這個線和箭。

不過話說回來,死記硬背這些東西確實很難,於是我自己想了一個打油詩,幫助自己來記憶,你也可以來試一下。

實箭泛化虛實現

虛線依賴實關聯

空菱聚合實組合

專案溝通圖常見

 

所以你學會了嗎?

赞(0)

分享創造快樂