首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

UML 類關系全解析:泛化、實現、依賴、關聯、聚合、組合

     編輯:Java 相關知識

六大關系強弱排序

泛化 = 實現 > 組合 > 聚合 > 關聯 > 依賴

1. 泛化 / 實現

關系:is-a(繼承/實現)
箭頭:實線空心三角箭頭,指向父類/接口
場景:類繼承類、接口繼承接口、類實現接口

泛化關系

2. 依賴

關系:use-a(臨時/弱關聯)
箭頭:虛線箭頭,指向被依賴類
代碼表現:方法參數、局部變量、靜態方法調用
特點:單向、易變、盡量減少

依賴關系

3. 關聯

關系:has-a(長期/結構性)
箭頭:實線箭頭(單向)或無箭頭(雙向)
代碼表現:成員變量(字段)
分類:單向關聯(推薦,低耦合)、雙向關聯

關聯關系

4. 聚合

關系:整體-部分,弱擁有(部分可獨立存在)
箭頭:實線空心菱形,菱形在整體端
代碼表現:成員變量,但部分對象可在整體創建前/後獨立構造
生命周期:部分 ≠ 整體

聚合關系

5. 組合

關系:整體-部分,強擁有(部分不可獨立)
箭頭:實線實心菱形,菱形在整體端
代碼表現:成員變量,部分在整體構造時創建,整體銷毀時銷毀
生命周期:部分 = 整體

組合關系

關鍵區別速查表

關系語義代碼體現生命周期UML 符號
依賴use-a參數/局部變量/靜態調用臨時虛線箭頭
關聯has-a成員變量獨立實線箭頭
聚合整體-部分(弱)成員變量,部分可外部傳入部分獨立空心菱形
組合整體-部分(強)成員變量,內部 new 部分部分隨整體實心菱形
泛化is-aextends/implements子依賴父空心三角箭頭

建模建議

  • 優先使用單向關聯,降低耦合
  • 「擁有」關系優先考慮聚合/組合,根據部分獨立性決定
  • 避免濫用繼承,組合/聚合往往更靈活(組合復用原則)
  • 依賴關系不穩定,架構層面嚴格控制依賴方向(依賴倒置)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved