步步為營UML建模系列六、類圖(Class diagram)


概述

類圖(Class Diagram)是描述類、接口、協作以及它們之間關系的圖,用來顯示系統中各個類的靜態結構。類圖是定義其他圖的基礎,在類圖基礎上,可以使用狀態圖、協作圖、組件圖和配置圖等進一步描述系統其他方面的特性。

類圖包括7個元素:類(Class)、接口(Interface)、協作(collaboration)、依賴關系(Dependency)、泛化關系(Generalization)、關聯關系(Association)以及實現關系(Realization)。

 

類之間的關系圖

1

關聯(Association)

是模型元素之間的一種語義聯系,是類之間的一種很弱的聯系。關聯可以有方向,可以是單向關聯,也可以是雙向關聯。可以給關聯加上關聯名來描述關聯的作用。關聯兩端的類也可以以某種角色參與關聯,角色可以具有多重性,表示可以有多少個對象參與關聯。可以通過關聯類進一步描述關聯的屬性、操作以及其他信息。關聯類通過一條虛線與關聯連接。對於關聯可以加上一些約束,以加強關聯的含義。如下圖所示:

image

聚合(Aggregation)

是一種特殊的關聯,聚合表示整體與部分的關系。通常在定義一個整體類后,再去分析這個整體類的組成結構。從而找出一些組成類,該整體類和組成類之間就形成了聚合關系。例如艦隊是由一系列的艦船組成。需求描述中“包含”、“組成”、“分為….部分”等詞常意味着聚合關系。

image

 

組合(Composition)

表示contains-a的關系,是一種強烈的包含關系。組合類負責被組合類的生命周期。是一種更強的聚合關系。部分不能脫離整體存在。如公司和部門的關系,沒有了公司,部門也不能存在了;調查問卷中問題和選項的關系;訂單和訂單選項的關系。在類圖使用實心的菱形表示,菱形從局部指向整體。

image

 

聚合和組合的區別

這兩個比較難理解,重點說一下。聚合和組合的區別在於:聚合關系是“has-a”關系,組合關系是“contains-a”關系;聚合關系表示整體與部分的關系比較弱,而組合比較強;聚合關系中代表部分事物的對象與代表聚合事物的對象的生存期無關,一旦刪除了聚合對象不一定就刪除了代表部分事物的對象。組合中一旦刪除了組合對象,同時也就刪除了代表部分事物的對象。

聚合是弱關聯,組合是強關聯.

泛化(generalization)

表示is-a的關系,是對象之間耦合度最大的一種關系,子類繼承父類的所有細節。直接使用語言中的繼承表達。在類圖中使用帶三角箭頭的實線表示,箭頭從子類指向父類。

image

實現(Realization)

在類圖中就是接口和實現的關系。這個沒什么好講的。在類圖中使用帶三角箭頭的虛線表示,箭頭從實現類指向接口。

image

依賴(Dependency)

對象之間最弱的一種關聯方式,是臨時性的關聯。代碼中一般指由局部變量、函數參數、返回值建立的對於其他對象的調用關系。一個類調用被依賴類中的某些方法而得以完成這個類的一些職責。在類圖使用帶箭頭的虛線表示,箭頭從使用類指向被依賴的類。

image

 

多重性(Multiplicity)

通常在關聯、聚合、組合中使用。就是代表有多少個關聯對象存在。使用數字..星號(數字)表示。如下圖,一個割接通知可以關聯0個到N個故障單。

image

 

 

再來看一個示例

image

 

歡迎各位參與討論,如果覺得對你有幫助,請點擊image    推薦下,萬分謝謝.

作者:spring yang

出處:http://www.cnblogs.com/springyangwc/

本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。


免責聲明!

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



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