所有的面向對象(Object Oriented)語言都離不開類的概念,理解了程序中類的設計也就理解了程序的一半。但類的具體描述方式在各個類中都不一樣,UML類圖的提出是爲了能夠脫離語言的限制,抽象地描述各個類的信息及各個類之間的關係。這是UML類圖的作用。
1 類的基本表示方式
在UML類圖中,每一個矩形代表一個類。我們舉一個簡單的例子:
這是一個代表車輛的類。
一般的類圖分爲三個部分。部分類圖有五個部分。
第一部分爲類名,如果類名用正體書寫則說明這是可以實例化的普通類。如果類名用斜體書寫,則說明這是抽象類。如果類名有下劃線修飾則說明這是靜態類。
第二部分爲類內的屬性,格式爲修飾符 屬性名 :屬性類型。修飾符爲“+”說明該屬性爲public型,“#”說明該屬性爲protected型,“-”說明該屬性爲private型。
第三部分爲類內的方法,格式爲修飾符 方法名 (參數名1:參數類型1,……):方法返回值類型。修飾符爲“+”說明該方法爲public型,“#”說明該方法爲protected型,“-”說明該方法爲private型。如果方法名有下劃線修飾則說明這是靜態方法。
如果類圖中需要描述類的性質,則放在第四部分描述。如果類內有內部類,則放在第五部分描述。
如果類圖描述的是一個接口,在接口名的上方需要加上《interface》的修飾符。同時該類圖僅有兩個部分,接口名和接口的方法。
對於任何一張類圖,只要對照上面的說明就可以解讀出含義。
2 類之間關係的表示方式
類之間的關係有繼承關係,實現關係,依賴關係,關聯關係,聚合關係,組合關係。
1.繼承關係
繼承關係使用如下箭頭:
由子類指向父類。
2.實現關係
實現關係使用如下箭頭:
有實現類指向接口
3.依賴關係
依賴關係使用如下箭頭:
由使用者指向被使用者。
如果A指向B,則說明A中使用了B,使用方式包括A類中有B類實例化對象的局部變量。A類中有方法把B類實例化對象當做了參數,A類中有方法調用了B類中的靜態方法。
4.關聯關係
關聯關係使用如下箭頭:
由擁有者指向被擁有者。
如果A指向B,則說明A類中有B類的成員變量。
5.聚合關係
聚合關係使用如下箭頭:
由整體指向部分。
如果A指向B,則說明A類中有B類的成員變量,但是與關聯關係不同,A類和B類有邏輯關係。A類是整體,B類是部分。A類由B類構成,同時B類即便不在A類中也可以單獨存在。
6.組合關係
組合關係使用如下箭頭:
由整體指向部分。
如果A指向B,則說明A類中有B類的成員變量,但是與關聯關係不同,A類和B類有邏輯關係。A類是整體,B類是部分。A類由B類構成。但與聚合關係不同,如果B類不在A類中就無法單獨存在。
兩個類之間究竟是聚合還是組合完全由類的設計決定。