Class Diagram 類別圖筆記
¶緣由
每次需要開發較大型的新功能時,往往需要一併重構或是想新架構,而一個人想出來的架構往往會有許多的盲點,因此就會需要畫簡易的類別圖。類別圖不但可以重新審視自己想的架構,更能加速與其他工程師討論的效率。有鑒於本人時常忘記類別圖各種相依關係的圖示,因此以這篇筆記來幫助我快速恢復記憶。
¶什麼是類別圖 class diagram?
類別圖是 UML 的一種,他透過一個系統中的物件、物件的屬性、物件擁有的方法和物件與物件之間的關係來描述其結構。
¶類別圖符號
類別圖的符號分為兩大類
- 描述物件本身
- 描述物件與物件的關係
¶物件 Object
總共分為三大格
- 物件名字
- 物件屬性
- 前面為屬性名字
- 冒號後面為屬性型別
- 物件方法
- 前面為物件名字
- 括號內為參數和參數型別
- 冒號後面為回傳值型別
- +代表公開屬性/函式 public attribute / method
任何物件都可以存取和使用- -代表私有屬性/函式 private attribute / method
只有該物件內部才可以存取和使用- #代表保護屬性/函式 protected attribute / method
只有該物件和該物件繼承的子物件可以存取和使用
¶關係 Relation
-
Realization
- A implement B , A 實作 B
- B 為介面
-
Generalization
- A extend B, A 繼承 B
- B 為父類別
-
Dependency
- A references B, A 使用 B
- A 在參數或回傳時有用到 B
-
Association
- A has-a B object, A 擁有 B
- B 為 A 擁有的變數
Aggregation 和 Composition 為 Association 的一種特例
-
Aggregation
- A 是由 B 組合而成,且為弱關係
- A 和 B 擁有自己的獨立的生命週期,B 可單獨存在
- 舉例
訂單 擁有 商品
商品可以獨立存在
-
Composition
- A 是由 B 組合而成,且為強關係
- B 只要離開 A 便不具意義,無法單獨存在,且生命週期與 A 一樣
- 舉例
人 擁有 手、腳、頭
手、腳、頭獨立存在時無意義