《Java 核心技术卷1 第10版》学习笔记------ 类之间的关系
在類之間, 最常見的關(guān)系有
?依賴 (“ uses-a”)
?聚合(“ has-a”)
?繼承(“ is-a”)
依賴( dependence ), 即“ uses-a” 關(guān)系, 是一種最明顯的、 最常見的關(guān)系。例如, Order類使用 Account 類是因?yàn)?Order 對象需要訪問 Account 對象查看信用狀態(tài)。但是 Item 類不依賴于 Account 類, 這是因?yàn)?Item 對象與客戶賬戶無關(guān)。因此, 如果一個(gè)類的方法操縱另一個(gè)類的對象,我們就說一個(gè)類依賴于另一個(gè)類。
應(yīng)該盡可能地將相互依賴的類減至最少。 如果類 A 不知道 B 的存在, 它就不會(huì)關(guān)心 B的任何改變(這意味著 B 的改變不會(huì)導(dǎo)致 A 產(chǎn)生任何 bug )。用軟件工程的術(shù)語來說, 就是讓類之間的耦合度最小。
聚合(aggregation ), 即“ has-a” 關(guān)系, 是一種具體且易于理解的關(guān)系。 例如, 一個(gè)Order 對象包含一些 Item 對象。聚合關(guān)系意味著類 A 的對象包含類 B 的對象。
?
注釋: 有些方法學(xué)家不喜歡聚合這個(gè)概念,而更加喜歡使用“ 關(guān)聯(lián)” 這個(gè)術(shù)語。從建模的角度看, 這是可以理解的。 但對于程序員來說,“ has-a” 顯得更加形象。喜歡使用聚合的另一個(gè)理由是關(guān)聯(lián)的標(biāo)準(zhǔn)符號不易區(qū)分, 請參看表 4-1。
繼承( inheritance ), 即“ is-a” 關(guān)系, 是一種用于表示特殊與一般關(guān)系的。 例如, RushOrdei ?類由 Order 類繼承而來。 在具有特殊性的 RushOrder 類中包含了一些用于優(yōu)先處理的特殊方法, 以及一個(gè)計(jì)算運(yùn)費(fèi)的不同方法;而其他的方法, 如添加商品、 生成賬單等都是從Order 類繼承來的。一般而言, 如果類 A 擴(kuò)展類 B, 類 A 不但包含從類 B 繼承的方法,還會(huì)擁有一些額外的功能(下一章將詳細(xì)討論繼承,其中會(huì)用較多的篇幅講述這個(gè)重要的概念。)很多程序員采用 UML ( Unified Modeling Language, 統(tǒng)一建模語言)繪制類圖,用來描述類之間的關(guān)系。圖 4-2 就是這樣一個(gè)例子。類用矩形表示,類之間的關(guān)系用帶有各種修飾的箭頭表示。表 4-1 給出了 UML 中最常見的箭頭樣式。
總結(jié)
以上是生活随笔為你收集整理的《Java 核心技术卷1 第10版》学习笔记------ 类之间的关系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Java 核心技术卷1 第10版》学习
- 下一篇: 《Java 核心技术卷1 第10版》学习