1. 程式人生 > >UML中類之間的六大關係

UML中類之間的六大關係

理解六大關係中在程式碼中的體現,就可以輕鬆的閱讀設計模式

一、泛化關係(Generalization)

       說明:這種關係就是面嚮物件語言中的繼承關係,邏輯上可以用"is a"表示。

       程式碼體現:子類繼承父類。

       UML符號:一條實線+空心箭頭。

       圖示:

               

二、實現關係(Realization

       說明:和泛化關係相似,邏輯上也是用"is a"表示。區別在於實現關係繼承一個抽象類(abstract、interface),

                  而泛化關係繼承一個具體類。 

       程式碼體現:實現介面或繼承某個抽象類。

       UML符號:一條虛線+空心箭頭。

       圖示:

                

三、組合關係(Composition

       說明:是整體與部分的關係,但部分不能脫離整體而獨立存在。邏輯上能用"has a"表示。

       程式碼體現:成員變數。

       UML符號:一條實線+實心菱形。

       圖示:

                

四、聚合關係(Aggregation

       說明:是整體與部分的關係,部分能脫離整體而獨立存在。邏輯上能用"has a"表示。

       程式碼體現:成員變數

       UML符號:一條實線+空心菱形

       圖示:

                        

五、關聯關係(Association

       說明:是整體與部分的關係。邏輯上能用"has a"表示。

       程式碼體現:成員變數。

       UML符號:雙向關聯,一條實線或一條實線+兩個箭頭;單向關聯,一條實線+一個箭頭。

       圖示:

               

        

       自身關聯:在單例模式中可以看到。

         

        關聯的多元性圖示:

              

六、依賴關係(Dependency

       說明:是一種使用關係,即一個類的實現需要另一個類的協助。邏輯上能用"use a"表示。

                  儘量不要使用雙向依賴。

       程式碼體現:區域性變數、方法的引數和靜態方法的呼叫。

       UML符號:一條虛線+箭頭。

       圖示:

                

七、總結:

        1.六種關係的耦合度大小是:泛化 = 實現 > 組合 > 聚合 > 關聯 > 依賴

        2.泛化和實現體現了邏輯上的"is a"的關係,組合、聚合和關聯體現了邏輯上的"has a"的關係,

           “依賴”體現了邏輯上的"use a"的關係。

        3.寫這篇部落格的目的是為學習設計模式和閱讀開源框架的原始碼打基礎。