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

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

這裏寫圖片描述


類圖

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

  • 第一層顯示類的名稱
    • 若是是抽象類,就用斜體表示
  • 第二層顯示類的特性,一般是字段和屬性。
  • 第三層是類的操做,一般是方法和行爲。
    • +表示爲public
    • -表示爲private
    • #表示爲protected

接口圖

典型表明是:web

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

類與類、類與接口之間的關係

一、繼承關係

鳥繼承動物,大雁、鴨、企鵝繼承鳥。設計模式

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

箭頭指向父類。svg

public abstract class 動物{

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

二、實現接口

大雁會飛翔,因此大雁這個類實現了飛翔這個接口。spa

實現接口空心三角形+虛線來表示。設計

箭頭指向接口。code

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

}

三、聚合和組合關係

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

  • 聚合

    • 不少大雁聚在一塊兒變成雁羣,也能夠說雁羣裏有雁,因此是總體和個體之間的關係,即has-a的關係,此時總體與部分之間是可分離的,他們能夠具備各自的生命週期。即雁羣能夠不存在了,可是孤雁仍然存在。

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

    • public class 雁羣{
      private 大雁[] 大雁數組名
      }
  • 組合

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

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

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

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


四、關聯

企鵝和睦候有關聯,企鵝須要「知道」氣候的變化,須要「瞭解」氣候規律,關聯是最多見的關係,當一個類「知道」另外一個類時,能夠用關聯

表示形式:實線箭頭

代碼表示:

public class 企鵝{
    private Climate 氣候;
}

五、依賴

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

表示形式:虛線箭頭

代碼表示:

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

最後談談它們的做用

UML類圖在實際開發中很是常見,通常項目經理或產品經理根據實際業務來肯定開發中須要的類以及類的結構。

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

由於肯定好類圖不是一個簡單的工做,他須要考慮不少事情,固然也會用到不少設計模式。

只有這樣,程序員開發出來的程序纔有更好的健壯性易擴展性

相關文章
相關標籤/搜索