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


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

這里寫圖片描述


類圖

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

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

接口圖

典型代表是:

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

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

1、繼承關系

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

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

箭頭指向父類。

public abstract class 動物{

}
public classextends 動物{}
public class 大雁 extends 鳥{}
public classextends 鳥{}
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類圖的形式表現出來),可能有人會說為什么搞這么麻煩,

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM