於構建和可視化的面向對象的系統的圖形表示法。統一建模語言(UML)中的類圖是一種靜態結構圖,通過顯示系統來描述系統的結構:
- 類,
- 他們的屬性,
- 操作(或方法),
- 和對象之間的關係。
什麼是Class?
Class是對象的藍圖。對象和類是齊頭並進的。如果不談另一個,我們就不能談論一個。面向對象設計的整個要點不是關於對象,而是關於類,因為我們使用類來創建對象。所以一個類描述了一個對像是什麼,但它不是對象本身。
實際上,類描述了對象的類型,而對像是類的可用實例。每個對像都是從同一組藍圖構建的,因此包含相同的組件(屬性和方法)。標準含義是對像是類和對象的實例- 對象具有狀態和行為。
例子
狗有狀態- 顏色,名稱,品種以及行為- 搖擺,吠叫,吃。對像是類的實例。
UML類表示法
類表示封裝狀態(屬性)和行為(操作)的概念。每個屬性都有一個類型。每個操作都有一個簽名。類名是唯一的必填信息。
Class名稱:
- 類的名稱出現在第一個分區中。
類屬性:
- 屬性顯示在第二個分區中。
- 冒號後顯示屬性類型。
- 屬性映射到代碼中的成員變量(數據成員)。
Class操作(方法):
- 操作顯示在第三個分區中。它們是Class提供的服務。
- 方法的返回類型顯示在方法簽名末尾的冒號之後。
- 方法參數的返回類型顯示在參數名稱後面的冒號之後。操作映射到代碼中的類方法
類可見性
類中的屬性和操作名稱之前的+, - 和#符號表示屬性和操作的可見性。
- +表示公共屬性或操作
- - 表示私有屬性或操作
- #表示受保護的屬性或操作
參數方向性
操作(方法)中的每個參數可以表示為in,out或inout,其指定其相對於調用者的方向。此方向性顯示在參數名稱之前。
類圖的視角
透視的選擇取決於您在開發過程中的距離。例如,在域模型的製定過程中,您很少會超越概念角度。分析模型通常包含概念和規範視角的混合。設計模型開發通常首先著重於規範視角,並演變為實現視角。
可以從各種角度解釋圖表:
- 概念:代表域中的概念
- 規範:重點是軟件中抽像數據類型(ADT)的接口
- 實現:描述類如何實現其接口
視角影響要提供的細節量以及值得呈現的關係類型。如上所述,類名是唯一的必填信息。
Class之間的關係
UML不只是漂亮的圖片。如果使用得當,UML會精確地傳達如何從圖中實現代碼。如果精確解釋,實現的代碼將正確反映設計者的意圖。您能描述一下這些關係相對於下圖所示的目標編程語言的含義嗎?
如果您還不能識別它們,那麼本節的任何問題都無助於您理解UML類關係。一個類可能涉及與其他類的一個或多個關係。關係可以是以下類型之一:
繼承(或泛化):
泛化是更通用的分類器和更具體的分類器之間的分類關係。特定分類器的每個實例也是一般分類器的間接實例。因此,特定分類器繼承了更通用的分類器的特徵。
- 表示“is-a”關係。
- 抽像類名稱以斜體顯示。
- SubClass1和SubClass2是SuperClass的特化。
下圖顯示了繼承層次結構的示例。SubClass1和SubClass2派生自SuperClass。該關係顯示為實線,空心箭頭指向子元素到父元素。
繼承示例- 形狀
下圖顯示了具有兩種樣式的繼承示例。雖然連接器的繪製方式不同,但它們在語義上是等效的。
協會
關聯是UML類圖中類之間的關係。它們由類之間的實線表示。通常使用反映現實世界問題域的動詞或動詞短語來命名關聯。
簡單的聯想
- 兩個對等類之間的結構鏈接。
- Class1和Class2之間存在關聯
下圖顯示了簡單關聯的示例。有一個關聯連接<< control >>類Class1和<< boundary >>類Class2。關係顯示為連接兩個類的實線。
基數
基數用以下表示:
- 一對一
- 一對多
- 很多很多
聚合
一種特殊類型的關聯。
- 它代表了“一部分”關係。
- Class2是Class1的一部分。
- Class2的許多實例(用*表示)可以與Class1相關聯。
- Class1和Class2的對象具有不同的生命週期。
下圖顯示了聚合的示例。該關係在關聯端顯示為帶有未填充菱形的實線,該關聯連接到表示聚合的類。
組成
- 一種特殊類型的聚合,其中部件在整個銷毀時被銷毀。
- Class2的對象與Class1一起生存和死亡。
- Class2不能自立。
下圖顯示了一個組合示例。該關係在關聯端顯示為帶有填充菱形的實線,該關聯連接到表示整體或複合的類。
依賴
一個類的對象可能在方法的代碼中使用另一個類的對象。如果對象未存儲在任何字段中,則將其建模為依賴關係。
- 一種特殊類型的關聯。
- 如果對一個類的定義的更改可能導致另一個類的更改(但不是相反),則存在於兩個類之間。
- Class1取決於Class2
下圖顯示了依賴關係的示例。該關係顯示為帶有空心箭頭的虛線。
下圖顯示了依賴的另一個例子。Person類可能有一個帶有Book參數的hasRead方法,如果該人已經讀過該書,則返回true(可能通過檢查某個數據庫)。
實現
實現是藍圖類與包含其各自實現級別詳細信息的對象之間的關係。據說這個對象實現了藍圖類。換句話說,您可以將其理解為接口和實現類之間的關係。
例如,Owner接口可能指定獲取屬性和處置屬性的方法。Person和Corporation類需要以非常不同的方式實現這些方法。
類圖示例:訂單系統
類圖示例:GUI
類圖還可以附加到類或關係的註釋。
您已經了解了類圖是什麼以及如何繪製類圖。是時候繪製一個自己的類圖。獲取Visual Paradigm Community Edition,一個免費的UML軟件,並使用免費的Class Diagram工具創建自己的類圖。它易於使用且直觀。
免費類圖示例
免費類圖示例和模板可在在線類圖軟件中編輯:Visual Paradigm Online。使用模板作為起點來創建自己的類圖。