在畫類圖之前,首先要理清UML中的四種關系,常見的有以下四種關系: 泛化(Generalization), 實現(Realization),關聯(Association),依賴(Dependency),而在關聯中又包括:聚合(Aggregation),組合(Composition),在這幾種關系中他們又有剪不斷的聯系。
一、概念
【泛化】:是一種繼承關系,表示一般與特殊的關系,它指定了子類如何特化父類的所有特征和行為。箭頭指向:帶三角箭頭的實線,箭頭指向父類。
【實現】:是一種類與接口的關系,表示類是接口所有特征和行為的實現。箭頭指向:帶空心三角箭頭的虛線,箭頭指向接口。
【關聯】:是一種擁有的關系,它使一個類知道另一個類的屬性和方法。箭頭指向:實線箭頭。
【聚合】:表示整體對象擁有部分對象。箭頭指向:空心菱形+實線箭頭。
【組合】:聚合的一種形式,它具有更強的擁有關系,強調整體與部分的生命周期是一致的。箭頭指向:實心菱形+實現箭頭。
【依賴】:是兩個事物間的語義關系,其中一個事物(獨立事物)發生變化會影響另一個事物(依賴事物)。箭頭指向:虛線箭頭。
二、實例介紹
【泛化】:鳥屬于動物,它具有動物的特征同時還具有自己特有的功能。
【實現】:大雁實現飛翔的接口。
【關聯】:企鵝和氣候,企鵝生活在南極,它需要這種氣候才能生活,企鵝需要‘知道’氣候的變化,‘了解’氣候規律。
【聚合】:電腦和外接鍵盤,兩者可以獨立存在。
【組合】:鳥和翅膀的關系,不能獨立存在。
【依賴】:動物要生存需要依賴于氧氣,水和食物。
三、PK賽
1、【聚合】PK【組合】
相同點:兩者都表示‘擁有’的關系,區別:生命周期的長短。
【聚合】:表示一種弱的‘擁有’關系,體現的是A對象可以包含B對象,他們的生命周期或許是不同的,A對象不隨著B對象的消失而消失,兩者可以獨立存在。
【組合】:表示一種強的‘擁有’,他們是部分和整體的關系,他們的生命周期是相同的,A對象會隨著B對象的消失而消失,二者是不能獨立存在的。
關系強弱比較:組合>聚合
2、【泛化】PK【實現】
相同點:相當于繼承。 子類繼承父類,父類泛化子類。
關系強弱比較:泛化=實現
3、【關聯】PK【依賴】
相同點:都表示依賴關系。區別:類之間關系的強弱程度和類之間關系的時間長短。
【關聯】表示類之間的很強的關系,它表示類之間的“持久”關系,這種關系一般表示一種重要的業務之間的關系,需要保存的,或者說需要“持久化”的,或者說需要保存到數據庫中的。
【依賴】表示類之間的較弱的關系,它表示類之間的是一種“臨時、短暫”關系,這種關系是不需要保存的。
關系強弱比較:關聯>依賴
得到關系強弱的比較:泛化 = 實現 > 組合 > 聚合 > 關聯 > 依賴
四、小結
初次學習UML,對四種關系了解的還不是很深,在c#,設計模式中都有提到UML的四種關系和九種圖,相信通過反復的學習,一定可以加深對他們的理解。