UML依賴特征和使用注意事項(xiàng)解析
本節(jié)向大家介紹一下UML依賴關(guān)系,主要包括UML特征和UML使用應(yīng)該注意的問(wèn)題兩部分內(nèi)容,相信通過(guò)本節(jié)的介紹你對(duì)UML依賴關(guān)系一定會(huì)有深刻的認(rèn)識(shí)。下面就是具體介紹。
UML學(xué)習(xí)筆記——依賴關(guān)系
UML依賴關(guān)系的特征
對(duì)于兩個(gè)相對(duì)獨(dú)立的系統(tǒng),當(dāng)一個(gè)系統(tǒng)負(fù)責(zé)構(gòu)造另一個(gè)系統(tǒng)的實(shí)例,或者依賴另一個(gè)系統(tǒng)的服務(wù)時(shí),這兩個(gè)系統(tǒng)之間主要體現(xiàn)為依賴關(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)的依賴關(guān)系
Bicycle類(lèi)和Pump類(lèi)之間是UML依賴關(guān)系,在Bicycle類(lèi)中無(wú)需定義Pump類(lèi)型的變量。Bicycle類(lèi)的定義如下:
publicclassBicycle{
/**給輪胎充氣*/
publicvoidexpand(Pumppump){
pump.blow();
}
}
在現(xiàn)時(shí)生活中,通常不會(huì)為某一輛自行車(chē)配備專(zhuān)門(mén)的打氣筒,而是在需要充氣的時(shí)候,從附近某個(gè)修車(chē)棚里借個(gè)打氣筒打氣。在程序代碼中,表現(xiàn)為Bicycle類(lèi)的expand()方法有個(gè)Pump類(lèi)型的參數(shù)。以下程序代碼表示某輛自行車(chē)先后到兩個(gè)修車(chē)棚里充氣:
myBicycle.expand(pumpFromRepairShed1);//到***個(gè)修車(chē)棚里充氣
myBicycle.expand(pumpFromRepairShed2);//若干天后,到第二個(gè)修車(chē)棚里充氣
UML依賴關(guān)系使用注意事項(xiàng)
1.對(duì)存在依賴關(guān)系的兩個(gè)類(lèi)生成代碼時(shí),并不對(duì)關(guān)系的類(lèi)增加屬性。但產(chǎn)生支持關(guān)系所需的特定語(yǔ)句。在C++中,生成代碼中會(huì)包括必要的#include語(yǔ)句。
例如類(lèi)A依賴于類(lèi)B,類(lèi)A沒(méi)有B屬性,因此要用其他方法查找B。有三種方法:
如果B是全局的,則類(lèi)A知道它存在。
如果B實(shí)例化為類(lèi)A操作中的本地變量,則類(lèi)A知道它存在。
如果B作為參數(shù)傳遞到類(lèi)A中,則類(lèi)A知道它存在。
在依賴關(guān)系中,必須采用這三種方法之一。
關(guān)聯(lián)于UML依賴的第二個(gè)差別在于方向,關(guān)聯(lián)可以是雙向的,而依賴只能是單向的。
2.包之間同樣存在依賴性。例如包A依賴于包B。則不能直接在另一個(gè)應(yīng)用程序中復(fù)用A包,而要同時(shí)復(fù)用B包。而B(niǎo)包更容易復(fù)用,因?yàn)樗鼪](méi)有依賴于其他包。
要確定包依賴性關(guān)系,就要檢查Class框圖中的關(guān)系。如果不同包中的類(lèi)之間有關(guān)系,則包也有關(guān)系。
生成包依賴關(guān)系時(shí),要盡量避免循環(huán)依賴性。要避免循環(huán)依賴,可以把一個(gè)包一分為二。
【編輯推薦】
- UML依賴、關(guān)聯(lián)、聚集等關(guān)系的特征解析
- 專(zhuān)家解析 UML依賴和聚集關(guān)系有何異同
- UML組成及其全稱(chēng)解析
- 解析UML類(lèi)圖符號(hào)意義
- 九大UML視圖專(zhuān)家解析