




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、面向?qū)ο骍ML中類關(guān)系2011-5-19 來(lái)源:網(wǎng)絡(luò)如果你確定兩件對(duì)象之間是is-a的關(guān)系,那么此時(shí)你應(yīng)該使用繼承;比如菱形、圓形和方形都是形狀的一種,那么他們都應(yīng)該從形狀類繼承而不是聚合。如果你確定兩件對(duì)象之間是has-a的關(guān)系,那么此時(shí)你應(yīng)該使用聚合;比如電腦是由顯示器、CPU、硬盤等組成的,那么你應(yīng)該把顯示器、CPU、硬盤這些類聚合成電腦類,而不是從電腦類繼承。類間的關(guān)系 網(wǎng)上關(guān)于此類的討論非常多,發(fā)現(xiàn)對(duì)于該問(wèn)題的理解各有各的說(shuō)法,而各個(gè)說(shuō)法中又相去甚遠(yuǎn)。通過(guò)瀏覽這些討論以及對(duì)O'Reilly - UML 2.0 In A Nutshell (2007)的參考,發(fā)表一下自己的看法
2、類間關(guān)系有很多種,在大的類別上可以分為兩種:縱向關(guān)系、橫向關(guān)系??v向關(guān)系就是繼承關(guān)系,它的概念非常明確,也成為OO的三個(gè)重要特征之一,這里不過(guò)多的討論。橫向關(guān)系較為微妙,按照UML的建議大體上可以分為四種:1. 依賴 (Dependency) 2. 關(guān)聯(lián) (Association) 3. 聚合 (Aggregation) 4. 組合 (Composition) 它們的強(qiáng)弱關(guān)系是沒有異議的:依賴 < 關(guān)聯(lián) < 聚合 < 組合然而它們四個(gè)
3、之間的差別卻又不那么好拿捏,需要好好體會(huì)。1. 依賴: o UML表示法:虛線 + 箭頭 o 關(guān)系:" . uses a ." o 此關(guān)系最為簡(jiǎn)單,也最好理解,所謂依賴就是某個(gè)對(duì)象的功能依賴于另外的某個(gè)對(duì)象,而被依賴的對(duì)象只是作為一種工具在使用,而并不持有對(duì)它的引用。 o 典型的例子很多,比如:class Human public void breath() Air freshAir = new A
4、ir(); freshAir.releasePower(); public static void main() Human me = new Human(); while(true)
5、60; me.breath(); class Air public void releasePower() /do sth.
6、160; o 釋義:一個(gè)人自創(chuàng)生就需要不停的呼吸,而人的呼吸功能之所以能維持生命就在于吸進(jìn)來(lái)的氣體發(fā)揮了作用,所以說(shuō)空氣只不過(guò)是人類的一個(gè)工具,而人并不持有對(duì)它的引用。 2. 關(guān)聯(lián): o UML表示法:實(shí)線 + 箭頭 o 關(guān)系:" . has a ." o 所謂關(guān)聯(lián)就是某個(gè)對(duì)象會(huì)長(zhǎng)期的持有另一個(gè)對(duì)象的引用,而二者的關(guān)聯(lián)往往也是相互的。關(guān)聯(lián)的兩個(gè)對(duì)象彼此間沒有任何強(qiáng)制性的約束,只要二者同意,可以隨時(shí)解除關(guān)系或是進(jìn)行關(guān)聯(lián),它們?cè)谏趩?wèn)題上沒有任何約定。被關(guān)聯(lián)的對(duì)象還可以再被別的對(duì)象關(guān)聯(lián),所以關(guān)聯(lián)是可以共享的。 o 典型的例子很多,比如:class H
7、uman ArrayList friends = new ArrayList(); public void makeFriend(Human human) friends.add(human); public static void main()
8、160; Human me = new Human(); while(true) me.makeFriend(mySchool.getStudent();
9、160; o 釋義:人從生至死都在不斷的交朋友,然而沒有理由認(rèn)為朋友的生死與我的生死有必然的聯(lián)系,故他們的生命期沒有關(guān)聯(lián),我的朋友又可以是別人的朋友,所以朋友可以共享。 3. 聚合: o UML表示法:空心菱形 + 實(shí)線 + 箭頭 o 關(guān)系:" . owns a ." o 聚合是強(qiáng)版本的關(guān)聯(lián)。它暗含著一種所屬關(guān)系以及生命期關(guān)系。被聚合的對(duì)象還可以再被別的對(duì)象關(guān)聯(lián),所以被聚合對(duì)象是可以共享的。雖然是共享的,聚合代表的是一種更親密的關(guān)系。 o 典型的例子很多,比如:class Human
10、60; Home myHome; public void goHome() /在回家的路上 myHome.openDoor(); /看電視 public static v
11、oid main() Human me = new Human(); while(true) /上學(xué)
12、60; /吃飯 me.goHome(); o 釋義:我的家和我之間具有著一種強(qiáng)烈的所屬關(guān)系,我的家是可以分享的,而這里的分享又可以有兩種。其一是聚合間的分享,這正如你和你媳婦兒都對(duì)這個(gè)家有著同樣的強(qiáng)烈關(guān)聯(lián);其二是聚合與關(guān)聯(lián)的分享,如果你的朋友來(lái)家里吃個(gè)便飯,估計(jì)
13、你不會(huì)給他配一把鑰匙。 4. 組合: o UML表示法:實(shí)心菱形 + 實(shí)線 + 箭頭 o 關(guān)系:" . is a part of ." o 組合是關(guān)系當(dāng)中的最強(qiáng)版本,它直接要求包含對(duì)象對(duì)被包含對(duì)象的擁有以及包含對(duì)象與被包含對(duì)象生命期的關(guān)系。被包含的對(duì)象還可以再被別的對(duì)象關(guān)聯(lián),所以被包含對(duì)象是可以共享的,然而絕不存在兩個(gè)包含對(duì)象對(duì)同一個(gè)被包含對(duì)象的共享。 o 典型的例子很多,比如:class Human Heart myHeart = new Heart(); p
14、ublic static void main() Human me = new Human(); while(true) myHeart.beat(); o 釋義:組合關(guān)系就是整體與部分的關(guān)系,部分屬
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年云南省楚雄市中考一模地理試題(原卷版+解析版)
- 民間借貸房產(chǎn)證抵押流程
- 二零二五版人力資源管理顧問(wèn)聘用合同
- 二零二五辦公地址租賃合同范例
- 二零二五房地產(chǎn)企業(yè)股權(quán)轉(zhuǎn)讓
- 項(xiàng)目薪酬績(jī)效管理制度
- 酒店火鍋餐飲管理制度
- 超市餅干面板管理制度
- 行政費(fèi)用管理制度通知
- 進(jìn)場(chǎng)物資檢驗(yàn)管理制度
- 2025購(gòu)銷商品合同模板
- 2024年山西華陽(yáng)新材料科技集團(tuán)有限公司招聘筆試真題
- 2025年03月雙鴨山市“市委書記進(jìn)校園”引才活動(dòng)黑龍江能源職業(yè)學(xué)院13人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2025年湖南興湘投資控股集團(tuán)有限公司春季校園招聘28人筆試參考題庫(kù)附帶答案詳解
- 比例的應(yīng)用(教學(xué)設(shè)計(jì))-2024-2025學(xué)年六年級(jí)下冊(cè)數(shù)學(xué)北師大版
- 農(nóng)業(yè)機(jī)械設(shè)備使用與操作指南
- 2025年03月春季甘肅臨夏州引進(jìn)高層次人才和急需緊缺專業(yè)技術(shù)人才344人筆試歷年參考題庫(kù)考點(diǎn)剖析附解題思路及答案詳解
- 2025年03月州省氣象部門第二批公開招聘應(yīng)屆高校畢業(yè)生34人(第6號(hào))筆試歷年參考題庫(kù)考點(diǎn)剖析附解題思路及答案詳解
- 上海市第一至十八屆高一物理基礎(chǔ)知識(shí)競(jìng)賽試題及答案
- 《建筑工程設(shè)計(jì)文件編制深度規(guī)定》(2022年版)
- 病例報(bào)告表(CRF)模板
評(píng)論
0/150
提交評(píng)論