前言
這幾天回顧了《大話設計模式》,發現看類圖的時候分不清了,為了加強記憶,也方便回顧,自己手動畫了一次類圖,並參考了網上文章將此作為筆記,記錄下來。
類圖
共三層:
1、類名,如果是抽象類為類名為斜體。
2、特性,字段和屬性
3、操作,方法,+是公共(Publish)、-是私有(Private)、#是保護(Protected)
關系
關系有六種:
繼承(Generalization), 實現(Realization),關聯(Association),聚合(Aggregation),組合(Composition),依賴(Dependency)
繼承(Generalization)
描述:類與類的繼承關系,子類帶有父類的特性和操作
圖形表示:空心三角形+實線,由子類指向父類
代碼表現:繼承

public class 鳥 : 動物 { public virtual object 羽毛 { get; set; } public virtual void 下蛋() { } }
實現(Realization)
描述:類與接口的繼承關系,類對接口的操作的實現
圖形表示:空心三角形+虛線,由類指向接口
代碼表現:繼承

public class 大雁 : 飛翔 { public virtual void 下蛋() { } public virtual void 飛() { } }
關聯(Association)
描述:擁有的關系,類A知道類B的屬性和方法
圖形表示:箭頭+實線,指向被關聯的類
代碼表現:成員變量

public class 企鵝 { public virtual 氣候 氣候 { get; set; } public virtual void 下蛋() { } }
聚合(Aggregation)
描述:弱的擁有關系,整體和部分的關系,體現的是A對象,但B對象不是A對象的一部分,也就是B對象能脫離對象A而單獨存在
圖形表示:空心菱形+實線+箭頭,箭頭指向部分
代碼表現:成員變量(數組)

public class 雁群 { public virtual IEnumerable<大雁> 大雁 { get; set; } public virtual void 一行飛行() { } public virtual void V行飛行() { } }
組合(Composition)
描述:強的擁有關系,體現了嚴格的部分和整體的關系,主要體現在部分和整體的生命周期一樣。B對象是A對象的一部分,A對象不存在,B對象也不存在
圖形表示:實心菱形+實線+箭頭,箭頭指向部分
代碼表現:成員變量(構造函數里new)

public class 鳥 : 動物 { private IEnumerable<翅膀> 翅膀; public 鳥() { 翅膀 = new IEnumerable<翅膀>(); } public virtual object 羽毛 { get; set; } public virtual void 下蛋() { } }
依賴(Dependency)
描述:是一種使用的關系,即一個類的實現需要另一個類的協助,所以要盡量不使用雙向的互相依賴,不然會造成死循環
圖形表示:虛線+箭頭,箭頭指向被使用者
代碼表現:局部變量、方法參數或者對靜態方法的調用

public abstract class 動物 { public virtual object 生命 { get; set; } public virtual void 新陳代謝(水 水,氧氣 氧氣) { } public virtual void 繁殖() { } }
附錄
各種關系的強弱順序:
繼承 = 實現 > 組合 > 聚合 > 關聯 > 依賴