一、說明
UML 是“統一建模語言”的簡稱,是用來構建模型的一種語言,UML 發展至今有 14 種之多,如果想詳細瞭解 UML 發展可參考:什麼是統一建模語言。Class UML 是軟件設計中比較常用的一種,該篇我們主要探討 Class UML。
二、類
1、普通類
UML <-> Code:
public class Bird {
public bool hasLife;
public bool hasTooth;
public void layEggs() {}
}
解析:
- 整個 UML 分 3 個部分,分別爲:類名、屬性名、方法名。
- 權限:
- +:全局屬性或方法。
- - :私有。
- #:受保護。
- 下劃線:靜態。
2、抽像類
UML <-> Code:
abstract class Animal {
public bool hasLife;
public void metabolism(O2 o2, Water water) {}
public void breed() {}
}
解析:
抽像類與普通類乍一看沒什麼區別,但仔細看會發現類名爲斜體,所以將類名標識爲任體即可,其它照舊。
3、接口
UML <-> Code:
public interface Fly {
public void fly();
}
解析:
接口會在類名處有明顯的 <<interface>> 標識。
三、關係
除了表示單個類對象,還有很多連接關係,爲了方便理解,我們貼出一張關係圖,並且之後的關係說明均以此圖示例。
1、繼承
表示:空心三角 + 實線
例如:鳥繼承自動物;大雁、鴨子、企鵝繼承自鳥類,他們之前的關係用“空心三角 + 實線”表示。
class Animal {...}
class Bird extends Animal {...}
2、實現
表示:空心三角 + 虛線
例如:大雁實際了飛翔的接口。
interface Fly {
public void fly();
}
class WildGoose implements Fly {
public void fly() {}
...
}
3、關聯
表示:箭頭 + 實線
例如:企鵝與氣候關聯
class Penguin {
private weather;
...
}
class Weather {...}
4、依賴
表示:箭頭 + 虛線
例如:動物的新陳代謝需要氧氣和水。
class O2 {...}
class Water {...}
class Animal {
public void metabolism(O2 o2, Water water) {...}
}
5、聚合
表示:空心菱形 + 實線箭頭
例如:大雁和雁羣的關係:雁羣是由大雁聚合而來。
class WildGoose {...}
class WildGooseGroup {
List<WildGoose> list;
}
6、組合(合成)
表示:實心菱形 + 實線箭頭
例如:鳥和翅膀的關係。
Class Wing {...}
class Bird {
private Wing wing;
}
四、易混
1、依賴 VS 關聯
依賴和關聯有點類似,區別是:關聯代表一種更強的關係,一般體現爲成員變量的引用;而依賴則代表了一種稍弱的關係,體現爲方法中的引用(方法參數或方法內部)。
2、組合 VS 聚合
組合和聚合也是類似一種強依賴與弱依賴的關係:
聚合(弱依賴):雁羣少了一隻大雁依然是雁羣。
組合(強依賴):鳥必須得有翅膀。
五、總結
Class UML 在大型軟件建模中還是比較常用的。再者,學習設計模式時,幾乎所有的書籍都會提到每個設計模式所對應的 UML,如果想學習設計模式,提前學習瞭解一下 UML 也是非常有幫助的。