1. 程式人生 > >UML類圖中類之間的關係,聚合,組合,依賴總結

UML類圖中類之間的關係,聚合,組合,依賴總結

下面我就根據下面這個圖來講解一下UML類圖。

這裡寫圖片描述


類圖

首先,看動物那個矩形框,他就表示為一個類(Class)。類圖分為三層:

  • 第一層顯示類的名稱
    • 如果是抽象類,就用斜體表示
  • 第二層顯示類的特性,通常是欄位和屬性。
  • 第三層是類的操作,通常是方法和行為。
    • +表示為public
    • -表示為private
    • #表示為protected

介面圖

典型代表是:

  • 左下角的飛翔介面圖
    • 與類圖的區別主要是頂端有<<interface>>
    • 第一行表示為介面名稱
    • 第二行表示為介面方法
  • 正下方的唐老鴨方框右上方類似於棒棒糖的東西
    • 這種表示方法稱為棒棒糖表示法
    • 圓圈旁為介面名稱。
    • 介面方法在實現類中出現。

類與類、類與介面之間的關係

1、繼承關係

鳥繼承動物,大雁、鴨、企鵝繼承鳥。

繼承關係空心三角形+實線來表示。

箭頭指向父類。

public abstract class 動物{

}
public classextends 動物{}
public class 大雁 extends 鳥{}
public class
extends 鳥{
} public class 企鵝 extends 鳥{}

2、實現介面

大雁會飛翔,所以大雁這個類實現了飛翔這個介面。

實現介面空心三角形+虛線來表示。

箭頭指向介面。

interface 飛翔{
    void 飛();
}
public class 大雁 implements 飛翔{

}

3、聚合和組合關係

這兩種關係有這本質上的區別:

  • 聚合

    • 很多大雁聚在一起變成雁群,也可以說雁群裡有雁,所以是整體和個體之間的關係,即has-a的關係,此時整體與部分之間是可分離的,他們可以具有各自的生命週期。即雁群可以不存在了,但是孤雁仍然存在。

    • 空心的菱形+實線箭頭表示

    • public class 雁群{
      private 大雁[] 大雁陣列名
      }
  • 組合

    • 一隻鳥由兩個翅膀組合而成,它體現的是contains-a關係,這種關係比聚合更強,也稱為強聚合。他同樣體現的是整體與部分間的關係,但此時整體和部分是不可分的,整體的生命週期結束也就意味著部分的生命週期結束。比如這隻鳥死了,自然這兩個翅膀也不存在了。

    • 實心的菱形+實線箭頭表示

    • public class 鳥{
      private 翅膀 wing;
      public 鳥(){
          wing = new 翅膀();
      }
      }
    • -

這兩種關係對比著就很好理解。


4、關聯

企鵝和氣候有關聯,企鵝需要“知道”氣候的變化,需要“瞭解”氣候規律,關聯是最常見的關係,當一個類“知道”另一個類時,可以用關聯

表示形式:實線箭頭

程式碼表示:

public class 企鵝{
    private Climate 氣候;
}

5、依賴

凡是動物,生存都需要水和空氣,這種必須的需求,我們稱之為依賴關係。

表示形式:虛線箭頭

程式碼表示:

public abstract class 動物{
    public 生存(Water 水,Oxygen 空氣);
} 

最後談談它們的作用

UML類圖在實際開發中非常常見,一般專案經理或產品經理根據實際業務來確定開發中需要的類以及類的結構。

(以UML類圖的形式表現出來),可能有人會說為什麼搞這麼麻煩,

因為確定好類圖不是一個簡單的工作,他需要考慮很多事情,當然也會用到很多設計模式。

只有這樣,程式設計師開發出來的程式才有更好的健壯性易擴充套件性