類圖是一個靜態圖。它代表了應用程序的靜態視圖。類圖不僅用於可視化,描述和記錄系統的不同方面,還用於構建軟件應用程序的可執行代碼。
類圖描述了一個類的屬性和操作,以及對系統施加的約束。類圖被廣泛用於面向對象系統的建模,因為它們是唯一的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)