類圖是一個靜態圖。它代表了應用程序的靜態視圖。類圖不僅用於可視化,描述和記錄系統的不同方面,還用於構建軟件應用程序的可執行代碼。
類圖描述了一個類的屬性和操作,以及對系統施加的約束。類圖被廣泛用於面向對象系統的建模,因為它們是唯一的UML圖,可以直接用面向對象的語言進行映射。
類圖顯示了類,接口,關聯,協作和約束的集合。它也被稱為結構圖。
類圖的目的
類圖的目的是模擬應用程序的靜態視圖。類圖是唯一可以直接映射到面向對象語言的圖,因此在構建時被廣泛使用。
UML圖如活動圖,序列圖只能給出應用程序的順序流程,但類圖有點不同。它是編碼器社區中最流行的UML圖。
類圖的目的可以概括為:
-
應用程序靜態視圖的分析和設計。
-
描述系統的責任。
-
組件和部署圖的基礎。
-
正向和逆向工程。
通過顯示系統的類,它們的屬性以及類之間的關係來描述系統的結構。
Classifier
- 抽象基類
- 描述了一組具有共同特徵的實例
Feature
- 聲明分類器實例的行為或結構特徵
- 結構特徵描述分類器實例的結構(例如屬性)
- 行為特徵指定分類器實例行為的一個方面(例如操作)
Property Example:
屬性是結構特徵,表示:
- 分類器的屬性(當屬性由除關聯以外的分類器擁有時)
- 社團成員結束
- 結構化分類器的部分。
Operation⌘
- 分類器的行為特徵,它指定名稱,類型,參數和約束
- 可以有先決條件和後置條件
- 可以有一個類型(返回參數的類型)
- 例:
+ createWindow (location: Coordinates): Window
Class
- 描述了一組共享相同規格的特徵(屬性和操作)的對象,
- 是一個特殊的分類器
- 一個對像是一個類的實例
Generalization
- 更普遍的分類器和更具體的分類器之間的關係
- 特定分類器的每個實例也是通用分類器的間接實例
- 特定的分類器繼承了更一般的分類器的特徵
泛化示例
Association
- 指定實例之間的關係
- 描述了一組元組,其值是指類型化的實例
- 聲明關聯類型的實例之間可能存在鏈接
Multiplicity⌘
- 指定對象可以與多少個對象相關聯的對象
- 是最小值和最大值的範圍
- 語法:number或min..max
多重 | 符號 |
---|---|
零 | 0或0..0 |
正好一個 | 1 |
零或一個 | 0..1 |
零或更多 | 0 .. *或* |
一個或多個 | 1 .. * |
多重性example
多重性 - 順序和唯一性
- 多重性定義了收集元素的順序和唯一性的規範。
- 該選項可以指定值是否應該是唯一的和/或有序的。
- 排序:值的集合是按順序排序的(默認:不排序)
- 唯一:值集合中的每個值必須是唯一的(默認值:唯一)
Navigability
- 指定是否可以直接從另一個對象訪問一個對象
Aggregation
- 顯示瞭如何(整體)由部分組成
- 零件可以分開存在 - 可以共享
- 聚合的精確語義因應用領域和建模者而異:)
聚合/構成示例
N-ary
- 如果一個關聯有兩個以上的端點(這裡是三元關聯)
- 符號:菱形被用作連接點
關聯類
- 關聯類是具有關聯和類屬性的模型元素。
- 它不僅連接了一組分類器,而且還定義了屬於該協會本身的一組特徵。
依賴項
- 表示模型元素需要其他模型元素用於其規範或實現的關係
- 依賴元素的完整語義取決於供應商元素的定義,
- 供應商的修改可能會影響客戶模型元素
- 沒有供應商,客戶的語義是不完整的
- 依賴關係的類型可以通過使用關鍵字或構造型來指定
Interface
- 是一種分類的一個代表聲明了一組連貫的公共特性和義務
- 一個接口指定一個合同 ; 實現接口的分類器的任何實例都必須滿足該合同
- 它只是聲明 - 所以它不是可實例化的
提供Interface
- 由分類器實現的接口是其提供的接口
- 代表該分類器實例必須滿足的義務
必需的接口
- 指定分類服務需要,以執行其功能
接口示例
命名為Element⌘
- 表示可能具有名稱和可見性的元素
可見性種類 | 符號 |
---|---|
上市 | + |
私人的 | - |
保護 | # |
包 | 〜 |
Package
- 用於對元素進行分組,並為分組元素提供名稱空間
- 合格的名稱:
package name::element name
包導入,Access
包導入定義為定向關係,用於標識其成員要通過名稱空間導入的包。
兩種類型:
- «進口»用於公共包裹進口
- 傳遞:如果A導入B和B導入C,則A間接導入C.
- «訪問»用於私人包裹導入
- 不及物動詞
包導入示例
- 類型中的元素被導入到ShoppingCart,然後進一步導入到WebShop
- 輔助元素只能從ShoppingCart訪問,並且不能從WebShop引用
實例
- 是建模系統中的具體實例
- 實例=對象
Comment
- 一個可以附加到元素的文本註釋
- 可能包含對建模者有用的信息
- 可以附加到多個元素上
Constraint
- 條件或與元素有關的限制
- 它一定是真的
- 可以是正式的(OCL)或人類語言
- 句法:
{ [name :] boolean expression }
如何繪製類圖?
類圖是用於構建軟件應用程序的最流行的UML圖。學習類圖的繪圖程序是非常重要的。
類圖在繪製時有很多屬性需要考慮,但這裡將從頂層視圖考慮圖。
類圖基本上是系統靜態視圖的圖形表示,代表了應用程序的不同方面。類圖的集合代表整個系統。
在繪製類圖時應記住以下幾點 -
-
類圖的名稱應該對描述系統的方面有意義。
-
應預先確定每個元素及其關係。
-
每個班級的責任(屬性和方法)應該清楚地確定
-
對於每個類,應該指定最小數量的屬性,因為不必要的屬性會使圖變得複雜。
-
根據需要使用註釋來描述圖表的某些方面。在繪圖結束時,開發人員/編碼人員應該可以理解。
-
最後,在製作最終版本之前,應該在普通紙上繪製圖表並重複盡可能多次以使其正確。
下圖是應用程序的訂單系統示例。它描述了整個應用程序的一個特定方面。
-
首先,訂單和客戶被確定為系統的兩個要素。他們有一對多的關係,因為客戶可以有多個訂單。
-
Order類是一個抽像類,它有兩個具體的類(繼承關係)SpecialOrder和NormalOrder。
-
這兩個繼承的類具有作為Order類的所有屬性。另外,它們還具有其他功能,如dispatch()和receive()。
考慮到上面提到的所有要點,已經繪製了以下類圖。
何處使用類圖?
類圖是一個靜態圖,它用來模擬系統的靜態視圖。靜態視圖描述了系統的詞彙表。
類圖也被視為組件和部署圖的基礎。類圖不僅用於可視化系統的靜態視圖,而且還用於構建任何系統的正向和反向工程的可執行代碼。
通常,UML圖不是直接映射到任何面向對象的編程語言,但類圖是一個例外。
類圖清楚地顯示了與諸如Java,C ++等面向對象語言的映射。從實踐經驗來看,類圖通常用於構建目的。
簡而言之,可以說,類圖用於 -
-
描述系統的靜態視圖。
-
顯示靜態視圖元素之間的協作。
-
描述系統執行的功能。
-
使用面向對象的語言構建軟件應用程序。
尋找UML在線編輯器?點擊一下即可編輯
File Output (Use of Generalization)
Telephone (Use of Association)