依賴、關(guān)聯(lián)、聚合、組合_第1頁(yè)
依賴、關(guān)聯(lián)、聚合、組合_第2頁(yè)
依賴、關(guān)聯(lián)、聚合、組合_第3頁(yè)
依賴、關(guān)聯(lián)、聚合、組合_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、你是我的玫瑰-類關(guān)系闡微世界是普遍聯(lián)系的,因此程序世界中的類,也不可能是孤立的。UML為 我們定義了它們之間的關(guān)系,就是:依賴、關(guān)聯(lián)、聚合、組合還有泛化。泛化關(guān)系比較好理解,就是表示類之間的繼承關(guān)系。容易混淆的是依賴、 關(guān)聯(lián)、聚合和組合的關(guān)系。這里做一些甄別:1、依賴和關(guān)聯(lián)的顛倒顛在網(wǎng)上查找了一下依賴和關(guān)聯(lián)的區(qū)別,有說(shuō)關(guān)聯(lián)本身即是一種依賴,亦 有說(shuō)依賴是一種弱關(guān)聯(lián),其實(shí)說(shuō)來(lái)說(shuō)去是一檔子事。依賴和關(guān)聯(lián)都是說(shuō)一個(gè)類 用到了另一個(gè)類。其區(qū)別在于一個(gè)是使用,一個(gè)是擁有。依賴:具有某種偶然性。比如說(shuō)我要過(guò)河,沒(méi)有橋怎么辦,我就去借來(lái)一 條小船渡過(guò)去。我與小船的關(guān)系僅僅是使用(借用)的關(guān)系。表現(xiàn)在代碼上,

2、為 依賴的類的某個(gè)方法以被依賴的類作為其參數(shù)?;蛘呤莄lass A的某個(gè)方法創(chuàng) 造了 class B的實(shí)例抑或?qū)lass B的靜態(tài)方法的調(diào)用。如果A依賴于B,那 意味著B(niǎo)的變化可能要求A也發(fā)生變化;這是uml圖表示的依賴關(guān)系:PersonPerson代碼表現(xiàn):1 日國(guó)public class Person2白由3白山4/*劃船*/public void oarage (Boat boat)boat.oarage();關(guān)聯(lián):有名的客戶和訂單的關(guān)系以及公司和員工的關(guān)系,都是關(guān)聯(lián)關(guān)系。還有 就是我和我的單車的例子,他們都是一種“擁有”的關(guān)系。表現(xiàn)在代碼上,就 是一個(gè)類包含另一個(gè)類的實(shí)例,通常表現(xiàn)為

3、被關(guān)聯(lián)類以類屬性的形式出現(xiàn)在關(guān)聯(lián) 類的類定義中,也可以表現(xiàn)為關(guān)聯(lián)類引用了一個(gè)類型為被關(guān)聯(lián)類的全局變量。關(guān) 聯(lián)可以使單向的,也可以使雙向的。從網(wǎng)上找到的公司和員工的UML圖和代碼:Company + +N Em ploy 非 公司和員工的關(guān)聯(lián)關(guān)系曰田public class Company(private Employee employee;白中 public Employee getEmployee()return employee; TOC o 1-5 h z 6白由 public void setEmployee(Employee employee)this.employee=employ

4、ee;/公司運(yùn)作10白由 public void run()employee.startWorking();14可見(jiàn)依賴于與關(guān)聯(lián)亦有動(dòng)靜之別,關(guān)聯(lián)的類“靜態(tài)”地引用了被關(guān)聯(lián)類的實(shí)例變 量,而依賴的偶然性也正說(shuō)明了它的動(dòng)態(tài)性。2、聚合與組合同出而異體聚合與組合其實(shí)都是關(guān)聯(lián)的特例,都是整體和部分的關(guān)系。他們的區(qū)別在于 聚合的兩個(gè)對(duì)象之間是可分離的,他們具有各自的生命周期。而組合往往表現(xiàn)為 一種唇齒相依的關(guān)系。聚合:一種容納或曰包含的關(guān)系,如同機(jī)場(chǎng)和飛機(jī),汽車和輪胎的關(guān)系。其實(shí)仔 細(xì)想想,前面的公司和員工的關(guān)系也有聚合的味道在里面。組合:也可稱之為強(qiáng)聚合,整體和部分是不可分的,整體的生命周期結(jié)束時(shí)也

5、就 是部分的生命周期到頭時(shí)。很有名的就是桌子和桌子腿的關(guān)系。聚合的UML圖:組合的UML圖:然而,聚合與組合的代碼表現(xiàn)形式是一樣的,都可以表現(xiàn)為以下的形式,它們僅 僅具有語(yǔ)義上的區(qū)別。網(wǎng)上找到的電腦和CPU的關(guān)系的代碼表現(xiàn):曰田public class ComputerI private CPU cpu;白由 public CPU getCPU()I return cpu;6由由 public void setCPU(CPU cpu)71 this.cpu=cpu;開(kāi)啟電腦10百由 public void start()/cpu 運(yùn)作121cpu.run();15結(jié)語(yǔ):一般情況下,當(dāng)某個(gè)類被當(dāng)

6、作參數(shù)傳遞并且被當(dāng)作結(jié)果返回的時(shí)候,或者被 當(dāng)作某個(gè)方法內(nèi)的臨時(shí)變量使用的時(shí)候,可以運(yùn)用依賴關(guān)系,使用關(guān)聯(lián)來(lái)表示一 個(gè)擁有關(guān)系,而不是整體-部分關(guān)系。使用聚合來(lái)表示一個(gè)動(dòng)態(tài)的整體-部分關(guān)系, 而是用組合來(lái)表示一個(gè)靜態(tài)的整體-部分關(guān)系。但是需要指出的是,所謂“關(guān)系” 只是在某個(gè)問(wèn)題域才有效,離開(kāi)了這個(gè)問(wèn)題域,可能這些關(guān)系就不成立了,例如 之前我和小船的關(guān)系,可能在某個(gè)問(wèn)題域中,我是船夫,我的工作就是駕著小船 在河上擺渡,那我和小船的關(guān)系就上升為關(guān)聯(lián)關(guān)系了。試想一下,武俠小說(shuō)中的 那些劍仙們,修煉到人劍合一的境地,劍在人在,劍亡人亡,那它們之間的關(guān)系 就似乎與組合關(guān)系類似了。又如在關(guān)心汽車的領(lǐng)域里,輪胎是一定要組合在汽車 類中的,因?yàn)樗x開(kāi)了汽車就沒(méi)有意義了。但是在賣輪胎的店

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論