一張圖讓你快速學會UML(聚合、組合、依賴、繼承、接口、類)

有朋友反映,一上來直接講設計模式就算理解了,也不知道如何畫出類圖,那麼我們就通過一張圖,來圖解如何應用UML正確表示類與類之間的關係。

 

 

 

這張圖完整講述了鳥類的生存。

 

首先是類:在UML中,我們用分成三欄的長方形表示。第一欄是名稱,第二欄是屬性,第三欄是方法。

 

繼承:唐老鴨屬於鴨的一種,或者說是鴨的細化劃分,而鴨屬於鳥類,鳥類屬於動物,這裏無論表達成“是”還是屬於,就是這樣一個直觀的關係。用實線一端帶空心三角箭頭表示。箭頭指向父類。

 

依賴:凡是動物,生存都需要水和空氣,這種必須的需求,我們稱之爲依賴關係。用虛線一端帶箭頭表示,箭頭指向依賴物。

 

聚合、組合:這兩個關係我們放在一起,因爲她們看似十分的相似,但是卻有着本質的區別。

                 很多大雁聚合在一起變成雁羣,也可以說雁羣裏有雁,所以是整體和個體之間的關係,即has-a的關係,此時整體與部分之間是可分離的,他們可以具有各自的生命週期。即雁羣可以不存在了,但是孤雁仍然存在。

                      一隻鳥由兩個翅膀組合而成,即一隻鳥有兩個翅膀。雖然組合和聚合我們都說“有”什麼,但是這個“有”是不同的,他體現的是一種contains-a的關係,這種關係比聚合更強,也稱爲強聚合;他同樣體現整體與部分間的關係,但此時整體與部分是不可分的,整體的生命週期結束也就意味着部分的生命週期結束,比如這隻鳥死了,自然這兩個翅膀也就不存在了。

 

關聯:企鵝和氣候有關聯,關聯是最常見的關係,表示類與類之間的聯接, 它使一個類知道另一個類的屬性和方法。關聯有兩個端點, 在每個端點可以有一個基數, 表示這個關聯的類可以有幾個實例. 
           常見的基數及含義: 0..1:0 或1 個實例. 
                                             0..*: 對實例的數目沒有限制. 
                                             1: 只能有一個實例. 
                                             1..*: 至少有一個實例.
 

接口:最後就是接口了,接口有兩欄組成,第一欄的頂端加上《interface》後下方寫接口名稱,第二欄是接口方法。接口有自己的表示方法“實現”,虛線一端帶空心三角形。實際開發中,爲了更好的實現"開-閉原則",一般都是定義接口,依賴於接口,依賴於抽象。

還有一個概念是——多態,圖中沒有出現。多態顧名思義就是有很多種形式。

bush.roar()

orang.roar()

donald.roar()

同樣是一個roar消息,卻因爲不同的對象可產生完全不同的結果。

以上,就是通過一張圖快速瞭解UML啦,圖片via《大話設計模式》,如有不足,歡迎斧正!

歡迎關注技術公衆號:架構師成長營

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章