第五章物件之间的关联_第1页
第五章物件之间的关联_第2页
第五章物件之间的关联_第3页
第五章物件之间的关联_第4页
第五章物件之间的关联_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章 物件之間的關聯JavaObjects徹底研究

相關與連結多重度一對一(1:1)

一對多(1:m)

多對多(m:m)

多重度與連結聚合與組合聚合

(aggregation)是一種特殊的相關,也稱為「組成」、「由...構成」或是「擁有」的關係組合

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

類別正確的方法(#3):利用繼承功能繼承的本質是「is-a」繼承的好處類別階層結構Object類別繼承真的是一種關聯嗎?在物件階層裡面避免「連鎖效應」衍生類別時的規則:該做哪些事繼承的本質是「is-a」繼承經常說成兩個類別之間的「是一個」(is-a)關聯,因為如果B類別(GraduateStudent)是從A類別(Student)衍生而來的話,那麼B真的就是一個

A的特例如果A類別可以做的一些事情,提議中的B子類別沒辦法做的話,B就不是A合理的子類別

特化

(specialization),泛化

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

與沒有繼承功能的語言比起來,子類別簡潔太多了

可以透過繼承功能沿用、擴充已經徹底測試過的程式碼,完全不必修改

最棒的是,即使我們沒有現有類別的原始碼,還是可以從現有類別衍生出新類別

分類是人類整理資訊的自然作法類別階層結構節點

(note)衍生而來

(derivedfrom)前輩

(ancestor)後輩

(descendant)根節點

(rootnote)終端

(terminal)樹葉節點

(leafnode)兄弟

(siblings)覆寫重新利用父類別的特徵:super關鍵字衍生類別時的規則:別做哪些事私有特徵與繼承繼承與建構子建構子不會被繼承以super(...)重新利用建構子

換掉預設的無參數建構子

關於多重繼承衍生類別時的規則:別做哪些事我們不應該變更一個特徵的語義—也就是它的目的、意義

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

我們不應該在覆寫方法的時候,試著變更方法的簽名

總結相關指的是類別之間的關聯—也就是兩個類別、型別實體之間可能產生的關聯;而連結

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论