關(guān)聯(lián)--依賴、組合--聚合 聯(lián)系與區(qū)別_第1頁
關(guān)聯(lián)--依賴、組合--聚合 聯(lián)系與區(qū)別_第2頁
關(guān)聯(lián)--依賴、組合--聚合 聯(lián)系與區(qū)別_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、依賴是比關(guān)聯(lián)弱的關(guān)系,關(guān)聯(lián)代表一種結(jié)構(gòu)化的關(guān)系,體現(xiàn)在生成的代碼中,以java為例:若類A單向關(guān)聯(lián)指向類B,則在類A中存在一個屬性Bb。若類A依賴類B,則不會有這個屬性,類B的實例可能存在于某個方法調(diào)用的參數(shù)中,或某個 方法的局部變量中。例如代碼:依賴:一一存在于某個方法調(diào)用的參數(shù)中,或某個方法的局部變量中。Person類與Screwdriver類的依賴關(guān)系代碼表現(xiàn)public class Person/*擰螺絲*/public void screw(Screwdriver screwdriver)screwdriver.screw();關(guān)聯(lián):-存在一個屬性公司(Company)和員H(Emp

2、loyee)的關(guān)聯(lián)關(guān)系代碼表現(xiàn)public class Companyprivate Employee employee;public Employee getEmployee() return employee;public void setEmployee(Employee employee) this.employee=employee;公司運作public void run()employee.startWorking();聚合:空心菱形加實線箭頭表示表示C9聚合C10,但是C10可以離開C9而獨立存在(獨立存在的意思是在某 個應(yīng)用的問題域中這個類的存在有意義。這句話怎么解,請看下面組

3、合里的解 釋)。同構(gòu)性,主體和部分不具有生命期的一致性 課程組可由多個學(xué)生組成,課程組撤消了,學(xué)生還活得好好的,這是聚合。組合(也有人稱為包容):一般是實心菱形加實線箭頭表示異構(gòu)性,部分和主體具有生命期上的一致性表示的是C8被C7包容,而且C8不能離開C7而獨立存在。但這是視問題域而定 的,例如在關(guān)心汽車的領(lǐng)域里,輪胎是一定要組合在汽車類中的,因為它離開 了汽車就沒有意義了。但是在賣輪胎的店鋪業(yè)務(wù)里,就算輪胎離開了汽車,它也 是有意義的,這就可以用聚合了。在敏捷開發(fā)中還說到,A組合B,則A需要 知道B的生存周期,即可能A負(fù)責(zé)生成或者釋放B,或者A通過某種途徑知道B 的生成和釋放。組合的例子:你

4、顯示屏上的瀏覽器窗口,關(guān)閉瀏覽器,上面的按紐死掉不見了, 這是組合(再打開一個瀏覽窗口,按紐已經(jīng)不是原來的了)。舉例:你和你的心臟之間是composition關(guān)系你和你買的書之間是aggregation關(guān)系你和你的朋友之間是association關(guān)系關(guān)聯(lián)和聚合的區(qū)別主要在語義上,關(guān)聯(lián)的兩個對象之間一般是平等的,例如你是 我的朋友,聚合則一般不是平等的,例如一個公司包含了很多員工,其實現(xiàn)上 是 差不多的。聚合和組合的區(qū)別則在語義和實現(xiàn)上都有差別,組合的兩個對象之間 其生命期有很大的關(guān)聯(lián),被組合的對象是在組合對象創(chuàng)建的同時或者創(chuàng)建之后創(chuàng) 建,在組合對象銷毀之前銷毀。一般來說被組合對象不能脫離組合對

5、象獨立存在, 而且也只能屬于一個組合對象,例如一個文檔的版本,必須依賴于文檔的存在, 也只能屬于一個文檔。聚合則不一樣,被聚合的對象可以屬于多個聚合對象, 例如一個員工可能可以屬于多個公司看來大家對組合的理解沒有意義,因為他們直接有共同的lifetime ,甚至,被component的對象是否能夠被其他類所見需要component對象的同意。 association代表引用服務(wù),但不會永久保存引用的入口,比如,僅僅是參數(shù)引 用,用完就丟棄,是最弱連接。aggregation聚合代表永久引用或強(qiáng)引用,也許對象生成的時候就獲得了該引 用。雖然他們直接沒有生命期的約束。但是引用對象必須處理被引用對象義務(wù)消失的 意外處理。在討論聚合,關(guān)聯(lián),組合區(qū)別,討論那么多內(nèi)部類干什么?確實,他們的關(guān)系按強(qiáng)弱分有關(guān)聯(lián)聚合組合 我看大家主要分岐在聚合和組合上。說白一點,聚合這種關(guān)系是被包含的對象的 個數(shù)是0.*而組合是1.*聚合中的被包含對象可以沒有。而組合至少有一個。聚合是一種擁有的關(guān)系, 而組合是整體與部分的關(guān)系舉一個簡單的例子:一個圖書館可以有十萬本書,也可以一本也沒有。但空的圖書館還是圖書館

溫馨提示

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

最新文檔

評論

0/150

提交評論