第五章物件之間的關(guān)聯(lián)_第1頁(yè)
第五章物件之間的關(guān)聯(lián)_第2頁(yè)
第五章物件之間的關(guān)聯(lián)_第3頁(yè)
第五章物件之間的關(guān)聯(lián)_第4頁(yè)
第五章物件之間的關(guān)聯(lián)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第五章 物件之間的關(guān)聯(lián)JavaObjects徹底研究

相關(guān)與連結(jié)多重度一對(duì)一(1:1)

一對(duì)多(1:m)

多對(duì)多(m:m)

多重度與連結(jié)聚合與組合聚合

(aggregation)是一種特殊的相關(guān),也稱(chēng)為「組成」、「由...構(gòu)成」或是「擁有」的關(guān)係組合

(composition)則是聚合的強(qiáng)制形式,在這種關(guān)聯(lián)之下,「零件」不能脫離「整體」獨(dú)自出現(xiàn)繼承以新的抽象化概念處理需求變化(不好的)方法#1:修改Student類(lèi)別(不好的)方法#2:「複製」Student類(lèi)別以建立GraduateStudent

類(lèi)別正確的方法(#3):利用繼承功能繼承的本質(zhì)是「is-a」繼承的好處類(lèi)別階層結(jié)構(gòu)Object類(lèi)別繼承真的是一種關(guān)聯(lián)嗎?在物件階層裡面避免「連鎖效應(yīng)」衍生類(lèi)別時(shí)的規(guī)則:該做哪些事繼承的本質(zhì)是「is-a」繼承經(jīng)常說(shuō)成兩個(gè)類(lèi)別之間的「是一個(gè)」(is-a)關(guān)聯(lián),因?yàn)槿绻鸅類(lèi)別(GraduateStudent)是從A類(lèi)別(Student)衍生而來(lái)的話(huà),那麼B真的就是一個(gè)

A的特例如果A類(lèi)別可以做的一些事情,提議中的B子類(lèi)別沒(méi)辦法做的話(huà),B就不是A合理的子類(lèi)別

特化

(specialization),泛化

(generalization)繼承的好處能明顯減少冗餘程式碼

與沒(méi)有繼承功能的語(yǔ)言比起來(lái),子類(lèi)別簡(jiǎn)潔太多了

可以透過(guò)繼承功能沿用、擴(kuò)充已經(jīng)徹底測(cè)試過(guò)的程式碼,完全不必修改

最棒的是,即使我們沒(méi)有現(xiàn)有類(lèi)別的原始碼,還是可以從現(xiàn)有類(lèi)別衍生出新類(lèi)別

分類(lèi)是人類(lèi)整理資訊的自然作法類(lèi)別階層結(jié)構(gòu)節(jié)點(diǎn)

(note)衍生而來(lái)

(derivedfrom)前輩

(ancestor)後輩

(descendant)根節(jié)點(diǎn)

(rootnote)終端

(terminal)樹(shù)葉節(jié)點(diǎn)

(leafnode)兄弟

(siblings)覆寫(xiě)重新利用父類(lèi)別的特徵:super關(guān)鍵字衍生類(lèi)別時(shí)的規(guī)則:別做哪些事私有特徵與繼承繼承與建構(gòu)子建構(gòu)子不會(huì)被繼承以super(...)重新利用建構(gòu)子

換掉預(yù)設(shè)的無(wú)參數(shù)建構(gòu)子

關(guān)於多重繼承衍生類(lèi)別時(shí)的規(guī)則:別做哪些事我們不應(yīng)該變更一個(gè)特徵的語(yǔ)義—也就是它的目的、意義

我們不能實(shí)際排除特徵,也不能用忽視特徵的方式排除它們

我們不應(yīng)該在覆寫(xiě)方法的時(shí)候,試著變更方法的簽名

總結(jié)相關(guān)指的是類(lèi)別之間的關(guān)聯(lián)—也就是兩個(gè)類(lèi)別、型別實(shí)體之間可能產(chǎn)生的關(guān)聯(lián);而連結(jié)

(link)指的是兩個(gè)物件之間的實(shí)際關(guān)聯(lián)。在X類(lèi)別與Y類(lèi)別之間,我們將多重度定義為X類(lèi)別可以有幾個(gè)物件實(shí)體連結(jié)到指定的Y類(lèi)別物件,反之亦然。多重度可能有一對(duì)一(1:1)、一對(duì)多(1:m)與多對(duì)多(m:m)這三種。不管在哪種多重度之下,兩端的物件都可能是必要、或不是必要的。聚合是一種特殊的相關(guān)性,隱含著「包含」的關(guān)係。如何透過(guò)繼承,根據(jù)現(xiàn)有類(lèi)別衍生出新類(lèi)別,以及在衍生新類(lèi)別的時(shí)候該做哪些事、別做哪些事;具體來(lái)說(shuō),我們討論了要如何擴(kuò)充一個(gè)父類(lèi)別,並且透過(guò)新增特徵或覆載方法這兩種管道來(lái)特化父類(lèi)別。類(lèi)別階層結(jié)構(gòu)會(huì)如何隨著時(shí)間演進(jìn),以

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論