UML-類圖-Composition(組合)和Aggregation(聚合)的區別
簡而言之Composition(組合)關係是一個類不可以脫離另一個而存在,Aggregation(聚合)關係是兩個類可以單獨存在。
Composition(組合)
例如,翅膀不可以脫離鳥存在,翅膀是鳥的一個器官。
上圖的uml程式碼如下,可以參考PlantUML使用方法。
@startuml
class bird {
+bird()
+void fly()
+void jump()
}
class wing {
-float length
-String color
+void shake()
}
wing --* bird
@enduml
Aggregation(聚合)
鍵盤和滑鼠等可以脫離電腦存在。
上圖的uml程式碼如下
@startuml
class computer {
}
class keyboard {
}
class mouse {
}
keyboard --o computer
mouse --o computer
@enduml
相關文章
- [轉載]繼承(Generalization),組合(Composition),聚合(Aggregation),關聯(Association),依賴(Dependency),實現(Realization繼承
- c++類與類的聚合(Aggregation)關係C++
- Django 中 Aggregation聚合的使用Django
- python的模組和類有什麼區別Python
- 區間統計 聚合函式組合器函式
- MongoDB系列--深入理解MongoDB聚合(Aggregation )MongoDB
- 介面和抽象類的區別抽象
- Python類、模組、包的概念及區別Python
- list和tuple元組的區別
- Association, Composition and Aggregation in UI5, CRM, S/4HANA and C4CUI
- 什麼是組合資料型別?Python組合資料型別分為幾類?資料型別Python
- MVC下的DAO介面類和SERVICE介面類區別?MVC
- Python_類的組合Python
- 合併分支:Git merge 和 rebase 的區別Git
- HTTP協議類POST 和GET的區別HTTP協議
- 偽元素和偽類的區別總結
- 伺服器硬碟的分類和區別伺服器硬碟
- java-介面和抽象類的聯絡和區別。Java抽象
- java中Scanner類nextLine()和next()的區別和使Java
- (轉載)依賴、關聯、聚合、組合
- StringBuffer類的delete()方法和deleteCharAt()方法的區別delete
- break和continue的區別(流程圖表示)流程圖
- 多卡聚合路由器和普通路由器的區別路由器
- 多卡聚合路由器和企業路由器的區別路由器
- 物件導向 -- 類的組合物件
- ETL中雙流合併和多流合併的區別
- 耦合與聚合的區別比單體與微服務區別更重要微服務
- Git merge和rebase分支合併命令的區別Git
- 動態圖和靜態圖的程式碼區別
- 關於PHP this 和 self 呼叫類方法的區別PHP
- Java中異常分類和Throw和Throws的區別Java
- Java中抽象類和介面的區別Java抽象
- [CSS] 偽元素和偽類,::before 和 :before 區別CSS
- 類銀河惡魔城和類魂的區別是什麼?
- 聚合類
- array_merge和+號合併陣列的區別陣列
- 類的組合、繼承、模板類、標準庫繼承
- Android主專案和Module中R類的區別Android