詳解 Class UML

一、說明

UML 是“統一建模語言”的簡稱,是用來構建模型的一種語言,UML 發展至今有 14 種之多,如果想詳細瞭解 UML 發展可參考:什麼是統一建模語言。Class UML 是軟件設計中比較常用的一種,該篇我們主要探討 Class UML。

二、類 

1、普通類

UML <-> Code:

public class Bird {
    public bool hasLife;
    public bool hasTooth;
    public void layEggs() {}
}

解析:

  1. 整個 UML 分 3 個部分,分別爲:類名、屬性名、方法名。
  2. 權限:
    1. +:全局屬性或方法。
    2. - :私有。
    3. #:受保護。
    4. 下劃線:靜態。

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 也是非常有幫助的。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章