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