UML類(lèi)圖關(guān)系中關(guān)聯(lián)、依賴(lài)、聚集等關(guān)系的異同
本文和大家重點(diǎn)討論一下UML類(lèi)圖關(guān)系中幾種關(guān)系的異同,在UML類(lèi)圖關(guān)系中,關(guān)聯(lián),依賴(lài),聚集,組成的聯(lián)系十分緊密,不容易區(qū)分,本文試圖用通俗的語(yǔ)言來(lái)講解這四種關(guān)系的區(qū)別。
UML類(lèi)圖關(guān)系中關(guān)聯(lián)、依賴(lài)、聚集等關(guān)系的異同
--------------------------------------------------------------------------------
1.關(guān)聯(lián):連接模型元素及鏈接實(shí)例,用一條實(shí)線來(lái)表示;
2.依賴(lài):表示一個(gè)元素以某種方式依賴(lài)于另一個(gè)元素,用一條虛線加箭頭來(lái)表示;
3.聚集:表示整體與部分的關(guān)系,用一條實(shí)線加空心菱形來(lái)表示;
4.組成:表示整體與部分的有一關(guān)系,用一條實(shí)線加實(shí)心菱形來(lái)表示;
(關(guān)聯(lián),依賴(lài),聚集,組成的異同見(jiàn)后描述)
5.泛化(繼承):表示一般與特殊的關(guān)系,用一條實(shí)線加空心箭頭來(lái)表示;
6.實(shí)現(xiàn):表示類(lèi)與接口的關(guān)系,用一條虛線加空心箭頭來(lái)表示;
關(guān)聯(lián),依賴(lài),聚集的異同:(《Java面向?qū)ο缶幊獭芬粫?shū),作者:孫衛(wèi)琴來(lái)源:[url]www.javathinker.org[/url])
在建立對(duì)象模型時(shí),很容易把依賴(lài)、關(guān)聯(lián)和聚集關(guān)系混淆。當(dāng)對(duì)象A和對(duì)象B之間存在依賴(lài)、關(guān)聯(lián)或聚集關(guān)系時(shí),對(duì)象A都有可能調(diào)用對(duì)象B的方法,這是三種關(guān)系之間的相同之處,除此之外,它們有著不同的特征。
1.UML類(lèi)圖關(guān)系中依賴(lài)關(guān)系的特征
對(duì)于兩個(gè)相對(duì)獨(dú)立的系統(tǒng),當(dāng)一個(gè)系統(tǒng)負(fù)責(zé)構(gòu)造另一個(gè)系統(tǒng)的實(shí)例,或者依賴(lài)另一個(gè)系統(tǒng)的服務(wù)時(shí),這兩個(gè)系統(tǒng)之間主要體現(xiàn)為依賴(lài)關(guān)系,例如生產(chǎn)零件的機(jī)器和零件,機(jī)器負(fù)責(zé)構(gòu)造零件對(duì)象。再例如充電電池和充電器,充電電池通過(guò)充電器來(lái)充電。再例如自行車(chē)Bicycle和打氣筒Pump,自行車(chē)通過(guò)打氣筒來(lái)充氣。圖1-39為Bicycle類(lèi)與Pump類(lèi)的類(lèi)框圖。
圖1-39Bicycle類(lèi)與Pump類(lèi)的依賴(lài)關(guān)系
2.UML類(lèi)圖關(guān)系中關(guān)聯(lián)關(guān)系的特征
對(duì)于兩個(gè)相對(duì)獨(dú)立的系統(tǒng),當(dāng)一個(gè)系統(tǒng)的實(shí)例與另一個(gè)系統(tǒng)的一些特定實(shí)例存在固定的對(duì)應(yīng)關(guān)系時(shí),這兩個(gè)系統(tǒng)之間為關(guān)聯(lián)關(guān)系。例如客戶(hù)和訂單,每個(gè)訂單對(duì)應(yīng)特定的客戶(hù),每個(gè)客戶(hù)對(duì)應(yīng)一些特定的訂單;再例如公司和員工,每個(gè)公司對(duì)應(yīng)一些特定的員工,每個(gè)員工對(duì)應(yīng)一特定的公司;再例如自行車(chē)和主人,每輛自行車(chē)屬于特定的主人,每個(gè)主人有特定的自行車(chē),圖1-40顯示了主人和自行車(chē)的關(guān)聯(lián)關(guān)系。而充電電池和充電器之間就不存在固定的對(duì)應(yīng)關(guān)系,同樣自行車(chē)和打氣筒之間也不存在固定的對(duì)應(yīng)關(guān)系。
圖1-40主人和自行車(chē)的關(guān)聯(lián)關(guān)系
3.UML類(lèi)圖關(guān)系中聚集關(guān)系的特征
當(dāng)系統(tǒng)A被加入到系統(tǒng)B中,成為系統(tǒng)B的組成部分時(shí),系統(tǒng)B和系統(tǒng)A之間為聚集關(guān)系。例如自行車(chē)和它的響鈴、龍頭、輪胎、鋼圈以及剎車(chē)裝置就是聚集關(guān)系,因?yàn)轫戔徥亲孕熊?chē)的組成部分。而人和自行車(chē)不是聚集關(guān)系,因?yàn)槿瞬皇怯勺孕熊?chē)組成的,如果一定要研究人的組成,那么他應(yīng)該由頭、軀干和四肢等組成。由此可見(jiàn),可以根據(jù)語(yǔ)義來(lái)區(qū)分關(guān)聯(lián)關(guān)系和聚集關(guān)系。
聚集關(guān)系和關(guān)聯(lián)關(guān)系的區(qū)別還表現(xiàn)在以下方面:
(1)對(duì)于具有關(guān)聯(lián)關(guān)系的兩個(gè)對(duì)象,多數(shù)情況下,兩者有獨(dú)立的生命周期。比如自行車(chē)和他的主人,當(dāng)自行車(chē)不存在了,它的主人依然存在;反之亦然。但在個(gè)別情況下,一方會(huì)制約另一方的生命周期。比如客戶(hù)和訂單,當(dāng)客戶(hù)不存在,它的訂單也就失去存在的意義。
(2)對(duì)于具有聚集關(guān)系(尤其是強(qiáng)聚集關(guān)系)的兩個(gè)對(duì)象,整體對(duì)象會(huì)制約它的組成對(duì)象的生命周期。部分類(lèi)的對(duì)象不能單獨(dú)存在,它的生命周期依賴(lài)于整體類(lèi)的對(duì)象的生命周期,當(dāng)整體消失,部分也就隨之消失。比如小王的自行車(chē)被偷了,那么自行車(chē)的所有組件也不存在了,除非小王事先碰巧把一些可拆卸的組件(比如車(chē)鈴和坐墊)拆了下來(lái)。
不過(guò),在用程序代碼來(lái)表示關(guān)聯(lián)關(guān)系和聚集關(guān)系時(shí),兩者比較相似。
4.UML類(lèi)圖關(guān)系中組成關(guān)系的特征
組成關(guān)系是一種兩個(gè)類(lèi)之間的關(guān)系,其中整體類(lèi)由部分類(lèi)組成,部分類(lèi)需要整體類(lèi)才能存在,這種關(guān)系意味著銷(xiāo)毀整體類(lèi)將會(huì)同時(shí)銷(xiāo)毀部分類(lèi)
【編輯推薦】
- UML類(lèi)圖關(guān)系中關(guān)聯(lián) 聚合 依賴(lài)關(guān)系及其區(qū)別
- 全面認(rèn)識(shí)UML類(lèi)圖關(guān)系
- UML類(lèi)圖關(guān)系大全
- 深入剖析UML類(lèi)圖關(guān)系
- 專(zhuān)家指導(dǎo) UML類(lèi)圖關(guān)系表示方法