UML类图易混关系
簡介:區分UML類圖中易混的兩組關系:關聯與依賴、聚合和組合
思考題:
若類A再其方法Method1中定義并使用了類B的一個對象,類A其他部分的代碼都不涉及類B,那么類A與類B的關系應為什么?
當采用標準UML構建系統類模型(Class Model)時,若類A的對象維持類B對象的引用,并可與類C的對象共享相同的類B的對象,那么類A與類B具有什么關系?
關聯關系
類A關聯類B:如果實例化一個A類的對象,同時會有一個B類的對象被實例化。簡言之,B作為A的屬性存在。如下:
class A{ private B b; } class B{ }依賴關系
類A依賴類B:如果A的對象要完成某一操作,必須使用B的對象的某些操作才能完成。簡言之,B作為A的某個方法的方法參數存在。如下:
class A{ public void f(B b){} } class B{ }聚合與組合
大雁喜歡熱鬧害怕孤獨,所以它們一直過著群居的生活,這樣就有了雁群,每一只大雁都有自己的雁群,每個雁群都有好多大雁,大雁與雁群的這種關系就可以稱之為聚合。另外,每只大雁都有兩只翅膀,大雁與雁翅的關系就叫做組合。
由此可見:聚合的關系明顯沒有組合緊密,大雁不會因為它們的群主將雁群解散而無法生存;而雁翅就無法脫離大雁而單獨生存——組合關系的類具有相同的生命周期。
聚合代碼:
class GooseGroup{Goose goose;// 構造方法public GooseGroup(Goose g){goose = g;} }組合代碼:
class Goose{Wing wing;// 構造方法,創建Goose對象時創建Wing對象public Goose(){wing = new Wing();} }UML圖表示:
思考題答案:關聯;聚合
參考文章:聚合和組合關系的代碼體現_蘇涼柒的博客-CSDN博客_聚合關系代碼
總結
- 上一篇: 字符串是否存在
- 下一篇: MapReduce工作流理解