六種類關係

類之間有六種主要的關係類型:繼承、實現/實現、組合、聚合、關聯和依賴。六種關係的箭頭如下:

然後我們來了解類關係的具體內容。

UML class diagram relationships

六種關係

在六類關係中,組合、聚合、關聯三類關係的代碼結構與使用屬性存儲另一個類的引用相同。因此,必須通過內容之間的關係來區分它們。

遺產

繼承也稱為泛化,用於描述父類和子類之間的關係。父類也稱為基類,子類也稱為派生類。
在繼承關係中,子類繼承父類的所有功能,父類擁有所有的屬性、方法和子類。除了與父類相同的信息外,子類還包含其他信息。
例如:公共汽車、出租車、汽車都是汽車,它們都有名字,都可以在路上。

實現/實施

實現(Implementation)主要用於指定接口與實現類之間的關係
接口(包括抽像類)是方法的集合。在實現關係中,一個類實現一個接口,類中的方法實現接口聲明的所有方法。

例如:汽車和船舶都是交通工具,而交通工具只是移動工具的抽象概念,而船舶和交通工具實現了特定的移動功能。

組成關係

構圖:整體與局部的關係,但整體與局部不可分割

組合關係表示類的整體和部分之間的關係,整體和部分具有一致的生命週期。一旦整體對像不存在,部分對像也就不存在了,它們都會在同一個生命中死去。例如,一個人是由一個頭和一個身體組成的。兩者密不可分,並存。

聚合關係

聚合:整體與部分的關係,整體與部分可以分離。
聚合關係也代表了類的整體和部分的關係,成員對像是整體對象的一部分,但成員對象可以獨立於整體對象而存在。

例如,公交車司機和工作服和帽子是整體關係的一部分,但它們可以分開。工作服和帽子可以穿在其他司機身上。公交車司機也可以穿其他工作服和帽子。

關聯關係

關聯:表示一個類的屬性持有對另一個類的一個(或多個實例)的引用
關聯是類與類之間最常用的關係,表示一種對象與另一種對象之間存在聯繫。組合和聚合也屬於關聯關係,但隸屬關係類之間的關係比其他兩個弱。
關聯有四種:雙向關聯單向關聯自關聯多號關聯
例如:汽車和司機,一輛車對應一個特定的司機,一個司機可以開多輛汽車。
在 UML 圖中,雙向關聯可以有兩個箭頭沒有箭頭,單向關聯或自關聯有一個箭頭
在多重關係中,您可以直接在關聯行中添加一個數字,以表示相應類中的對像數量。
  • 1..1: 只有一個
  • 0..*: 零個或多個
  • 1..*:一個或多個
  • 0..1: 沒有或只有一個
  • m..n: 至少 m,最多 n (m<=n)

依賴項

依賴:假設A類的變化導致B類的變化,那麼說B類依賴於A類。
在大多數情況下,依賴關係反映在使用另一個類的對像作為參數的類的方法中

依賴關係是一種“使用”關係。一個特定事物的變化可能會影響其他使用它的事物,並在需要指示一個事物使用另一個事物時使用依賴關係。例如:汽車依賴汽油。如果沒有汽油,汽車將無法行駛。

類圖——訂單系統
下面的類圖對來自零售目錄的客戶訂單進行建模。中心類是Order。與之相關的是進行購買和付款的客戶付款是以下四種之一:現金支票信用卡或電匯。訂單包含OrderDetails(行項目),每個項目都有關聯的Item
類圖模板:UML 類圖示例:銷售訂單系統(由 Visual Paradigm Online 的類圖製作者創建)

編輯此模板

類圖示例:GUI

類圖也可能附有類或關係的註釋。

類圖模板:類圖 GUI 示例(由 Visual Paradigm Online 的類圖製作者創建)

編輯此模板

具有用戶定義約束的類圖

類圖模板:類圖 - 類和包約束(由 Visual Paradigm Online 的類圖製作者創建)

編輯此模板

六種關係中,組合、聚合、關聯的代碼結構是相同的,可以從關係的強弱來理解。從強到弱的順序是:繼承→實現→組合→聚合→關聯→依賴。下面是一個完整的UML圖。