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