設計模式-UML類圖的各符號含義(轉)


UML類圖的各符號含義

類圖基本符號可拆分為虛線,箭頭,實線,空心右三角,實心右三角,空心菱形和實心菱形。由這些基本的圖形進行組合構成了類圖的基本符號。這里要注意這幾個符號的順序,代表了類與類之間關系的耦合程 度。越向右耦合度越高。
  其中虛線+箭頭是表示即依賴的關系,實線+箭頭表示關聯的關系,虛線+空心右三角表示implements,實線+空心右三角表示的是泛化,即類的繼承關系。實線+空心菱形表示的是聚合的關系,實線+實心菱形則表示 組合的關系。
  另外一點是在看類圖的時候要注意。類圖的思想其實也還沒有脫離面向對象的思想,以某個類為中心,有些線是射入的而有些線是射出的。射入的線表示的是這 個類被哪些類所調用而射出的線則表示該類調用了 哪些類,包括泛化,關聯,依賴,聚合和組合四種關系。這類似於離散數學中有關圖部分的描述。
  1. 類(Class):使用三層矩形框表示。 第一層顯示類的名稱,如果是抽象類,則就用斜體顯示。 第二層是字段和屬性。 第三層是類的方法。 注意前面的符號,‘+’表示public,‘-’表示private,‘#’表示protected。
  2. 接口:使用兩層矩形框表示,與類圖的區別主要是頂端有<>顯示 。 第一行是接口名稱。 第二行是接口方法。
  3. 繼承類(extends) :用空心三角形+實線來表示。
  4. 實現接口(implements) :用空心三角形+虛線來表示
  5. 關聯(Association) :用實線箭頭來表示,例如:燕子與氣候
  6. 聚合(Aggregation) :用空心的菱形+實線箭頭來表示 聚合:表示一種弱的‘擁有’關系,體現的是A對象可以包含B對象,但B對象不是A對象的一部分,例如: 公司和員工 組合(Composition):用實心的菱形+實線箭頭來表示 組合:部分和整體的關系,並且生命周期是相同的。例如:人與手
  7. 依賴(Dependency) :用虛線箭頭來表示,例如:動物與氧氣
  8. 基數 :連線兩端的數字表明這一端的類可以有幾個實例,比如:一個鳥應該有兩只翅膀。如果一個類 可能有無數個實例,則就用‘n’來表示。關聯、聚合、組合是有基數的。

類之間的關系

UML把類之間的關系分為以下5種.
● 關聯:類A與類B的實例之間存在特定的對應關系
● 依賴:類A訪問類B提供的服務
● 聚集:類A為整體類,類B為局部類,類A的對象由類B的對象組合而成
● 泛化:類A繼承類B
● 實現:類A實現了B接口
關聯(Association)
關聯指的是類之間的特定對應關系,在UML中用帶實線的箭頭表示。按照類之間的數量對比,關聯 可以分為以下三種:
  ● 一對一關聯
  ● 一對多關聯
  ● 多對多關聯
注意:關聯還要以分為單向關聯和雙向關聯
依賴(Dependency)
  依賴指的是類之間的調用關系,在UML中用帶虛線的箭頭表示。如果類A訪問類B的屬性或者方法, 或者類A負責實例化類B,那么可以說類A依賴類B。和關聯關系不同,無須在類A中定義類B類型的屬性。
聚集(Aggregation)
聚集指的是整體與部分之間的關系,在UML中用帶實線的菱形箭頭表示。 聚集關系還可以分為兩種類型:
  ● 被聚集的子系統允許被拆卸和替換,這是普通聚集關系。
  ● 被聚集的子系統不允許被拆卸和替換,這種聚集稱為強聚集關系,或者組成關系。
注:強聚集(組成)可用帶實線的實心菱形箭頭表示。
泛化(Generalization)

  泛化指的是類之間的繼承關系,在UML中用帶實線的三角形箭頭表示。 實現(Realization) 實現指的是類與接口之間的關系,在UML中用帶虛線的三角形箭頭表示。

以下是GOF設計模式中的描述:

  箭頭和三角表示子類關系。
  虛箭頭線表示一個類實例化另一個類的對象,箭頭指向被實例化的對象的類。
  普通的箭頭線表示相識(acquaintance也叫關聯或者引用),意味着一個對象僅僅知道另一個對象。相識的對象可能請求彼此的操作,但他們不為對方負責,它只標示了對象間較松散的耦合關系。
  尾部帶有菱形的箭頭線表示聚合(aggregation),意味着一個對象擁有另一個對象或者對另一個對象負責。一般我們稱一個對象包含另一個對象,或者是另一個對象的一部分。聚合意味着聚合對象和其所有者具有相同的生命周期。
  抽象類名以斜體表示,抽象操作也以斜體表示。圖中可以包括實現操作的偽代碼,代碼將出現在帶有褶角的框中,並用虛線將該褶角框與代碼所實現的操作相連
  此實線箭頭表示, 繼承, 從一個非接口類的繼承
        圖1此實線箭頭表示, 繼承, 從一個非接口類的繼承
這里寫圖片描述
              圖2雙向關聯
那條連線表示雙向關聯: 看左邊, Flight扮演assignedFights角色, 有0到1個Plane跟他關聯(一個航班要么取消了沒有飛機,要么只能對應一架飛機) 看右邊, Plane扮演着assignedPlane角色, 有0到多個Flight跟他關聯(一個飛機可以參與多個航班, 也可以停在倉庫里面爛掉)
這里寫圖片描述
              圖3 單向關聯
基本的意義跟上面的是一樣的, 唯一不同的是, 右邊的類對左邊的類是一無所知的.
這里寫圖片描述
              圖4 軟件包
那個大的包圍的框叫軟件包, 名字為Account, 就一些可以歸類的類包裝起來
這里寫圖片描述
         圖5 實例化 (接口)
如此虛線的箭頭表示實現一個接口.
這里寫圖片描述
水平的連線還是表示上面所說的關聯, 但從關聯連線中引伸出來的虛線, 這意味當Flight類的一個實例關聯到 FrequentFlyer 類的一個實例時,將會產生 MileageCredit 類的一個實例.
這里寫圖片描述
帶菱形的箭頭表示基本聚合, 由上圖知道, Wheel類扮演wheels角色, 聚合4個到Car對象里面去, 空心的菱形表示Wheel對象並不隨Car的創建而創建,銷毀而銷毀
這里寫圖片描述
意義和上面類似, 唯一不同的是, 實心菱形表示Department對象隨Company對象的創建而創建,銷毀而銷毀
這里寫圖片描述
表示反射關聯, 顯示一個Employee類如何通過manager / manages角色與它本身相關。當一個類關聯到它本身時,這並不意味着類的實例與它本身相關,而是類的一個實例與類的另一個實例相關。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM