UML類圖


前言

  這幾天回顧了《大話設計模式》,發現看類圖的時候分不清了,為了加強記憶,也方便回顧,自己手動畫了一次類圖,並參考了網上文章將此作為筆記,記錄下來。

類圖

共三層:

  1、類名,如果是抽象類為類名為斜體。

  2、特性,字段和屬性

  3、操作,方法,+是公共(Publish)、-是私有(Private)、#是保護(Protected)

關系

關系有六種:

  繼承(Generalization),  實現(Realization),關聯(Association),聚合(Aggregation),組合(Composition),依賴(Dependency)

繼承(Generalization)

  描述:類與類的繼承關系,子類帶有父類的特性和操作

  圖形表示:空心三角形+實線,由子類指向父類

  代碼表現:繼承

public class 鳥 : 動物
{
    public virtual object 羽毛
    {
        get;
        set;
    }

    public virtual void 下蛋()
    {

    }
}
View Code

 

實現(Realization)

  描述:類與接口的繼承關系,類對接口的操作的實現

  圖形表示:空心三角形+虛線,由類指向接口

  代碼表現:繼承

public class 大雁 : 飛翔
{
    public virtual void 下蛋()
    {

    }

    public virtual void 飛()
    {

    }

}
View Code

 

 

關聯(Association)

  描述:擁有的關系,類A知道類B的屬性和方法

  圖形表示:箭頭+實線,指向被關聯的類

  代碼表現:成員變量

public class 企鵝
{
    public virtual 氣候 氣候
    {
        get;
        set;
    }

    public virtual void 下蛋()
    {

    }
}
View Code

 

 

聚合(Aggregation)

描述:弱的擁有關系,整體和部分的關系,體現的是A對象,但B對象不是A對象的一部分,也就是B對象能脫離對象A而單獨存在

圖形表示:空心菱形+實線+箭頭,箭頭指向部分

代碼表現:成員變量(數組)

public class 雁群
{
    public virtual IEnumerable<大雁> 大雁
    {
        get;
        set;
    }

    public virtual void 一行飛行()
    {

    }

    public virtual void V行飛行()
    {

    }
}
View Code

 

 

組合(Composition)

描述:強的擁有關系,體現了嚴格的部分和整體的關系,主要體現在部分和整體的生命周期一樣。B對象是A對象的一部分,A對象不存在,B對象也不存在

圖形表示:實心菱形+實線+箭頭,箭頭指向部分

代碼表現:成員變量(構造函數里new)

public class 鳥 : 動物
{
    private IEnumerable<翅膀> 翅膀;
    public 鳥()
    {
        翅膀 = new IEnumerable<翅膀>();
    }

    public virtual object 羽毛
    {
        get;
        set;
    }

    public virtual void 下蛋()
    {

    }
}
View Code

 

 

依賴(Dependency)

描述:是一種使用的關系,即一個類的實現需要另一個類的協助,所以要盡量不使用雙向的互相依賴,不然會造成死循環

圖形表示:虛線+箭頭,箭頭指向被使用者

代碼表現:局部變量、方法參數或者對靜態方法的調用

public abstract class 動物
{
    public virtual object 生命
    {
        get;
        set;
    }

    public virtual void 新陳代謝(水 水,氧氣 氧氣)
    {

    }

    public virtual void 繁殖()
    {

    }
}
View Code

 

附錄

各種關系的強弱順序:

        繼承 = 實現 > 組合 > 聚合 > 關聯 > 依賴 


免責聲明!

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



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