UML中的幾種關(guān)系_第1頁
UML中的幾種關(guān)系_第2頁
UML中的幾種關(guān)系_第3頁
UML中的幾種關(guān)系_第4頁
UML中的幾種關(guān)系_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

UML中的幾種關(guān)系(依賴,關(guān)聯(lián),泛化,實(shí)現(xiàn))關(guān)于設(shè)計(jì)模式的總結(jié)沒有落實(shí)到代碼上,而且設(shè)計(jì)模式自己確實(shí)動(dòng)手實(shí)現(xiàn)的非常少。所以在這一周里,除了看網(wǎng)站開發(fā)的視頻,著手開始對(duì)設(shè)計(jì)模式進(jìn)行實(shí)現(xiàn)以下。設(shè)計(jì)模式非常經(jīng)典,每次看都有不同的收獲,寫一下自己的收獲吧,請(qǐng)大家指正。在實(shí)現(xiàn)設(shè)計(jì)模式之前,首先來復(fù)習(xí)以下UML中的五種關(guān)系圖<1>依賴依賴關(guān)系用虛線加箭頭表示,如圖所示:上圖表示:上圖表示:Animal類依賴于Water類(動(dòng)物依賴于水)依賴是類的五種關(guān)系中耦合最小的一種關(guān)系。因?yàn)橐蕾囮P(guān)系在生成代碼的時(shí)候,這兩個(gè)關(guān)系類都不會(huì)增加屬性。這種微弱的關(guān)系可以用類之間的相互了解的程度來說明。(下圖為代碼生成圖)|publicclass'A'aiei{|publicclass'A'aiei{|publicWaterQf}publicclassAnimal{publicAnimalO{}由上圖可見生成的代碼中Animal類的屬性中沒有增加Water類。那么Animal類如何使用Water類呢,有三種方式:依賴關(guān)系的三種表現(xiàn)形式:Water類是全局的,則Animal類可以調(diào)用它Water類是Animal類的某個(gè)方法中的變量,則Animal類可以調(diào)用它。代碼演示如下:publicclassAnifnjl{publicvoidGrownUpQ{watersnull;}PS:Animal有一個(gè)長(zhǎng)大(GrownUp方法,Water類作為該方法的變量來使用。請(qǐng)注意Water類的生命期,它是當(dāng)Animal類的GrounUp方法被調(diào)用的時(shí)候,才被實(shí)例化。持有Water類的是Animal的一個(gè)方法而不是Animal類,這點(diǎn)是最重要的。③Water類是作為Animal類中某個(gè)方法的參數(shù)或者返回值時(shí)。代碼演示如下publiccldss^nirr:-J{publicWaterGrownUp(W^terwater){returnnull;}無用多說,Water類被Animal類的一個(gè)方法持有。生命期隨著方法的執(zhí)行結(jié)束而結(jié)束。在依賴關(guān)系中,必須采用這三種方法之一。關(guān)聯(lián)是實(shí)線加箭頭表示。表示類之間的耦合度比依賴要強(qiáng)例:水與氣候是關(guān)聯(lián)的,表示圖如下

Wate『CEirrate生成代碼如下:CEirratepublicclassWater{publicClimatemClimate;publicWaterOf}11可見生成的代碼中,Water類的屬性中增加了Climate類。關(guān)聯(lián)既有單向關(guān)聯(lián)又有雙向關(guān)聯(lián)。Water類稱為源類,但目標(biāo)類并不了WaterClimate單向關(guān)聯(lián):Water類和Climate類單向關(guān)聯(lián)(如下圖),則Climate類稱為目標(biāo)類。源類了解目標(biāo)類的所有的屬性和方法,解源類的信息。Water類稱為源類,但目標(biāo)類并不了WaterClimate雙向關(guān)聯(lián):源類和目標(biāo)類相互了解彼此的信息。如將Water類和Climate類之間改為雙向關(guān)聯(lián),如下圖publicclassClimate{publicWaterm^Water;publicCfjmateQf}publicclassWaiter{publicClimatem_Climate;publicWaterQ{依賴和關(guān)聯(lián)的區(qū)別:從類的屬性是否增加的角度看:發(fā)生依賴關(guān)系的兩個(gè)類都不會(huì)增加屬性。其中的一個(gè)類作為另一個(gè)類的方法的參數(shù)或者返回值,或者是某個(gè)方法的變量而已。發(fā)生關(guān)聯(lián)關(guān)系的兩個(gè)類,其中的一個(gè)類成為另一個(gè)類的屬性,而屬性是一種更為緊密的耦合,更為長(zhǎng)久的持有關(guān)系。從關(guān)系的生命期角度看:依賴關(guān)系是僅當(dāng)類的方法被調(diào)用時(shí)而產(chǎn)生,伴隨著方法的結(jié)束而結(jié)束了。關(guān)聯(lián)關(guān)系是當(dāng)類實(shí)例化的時(shí)候即產(chǎn)生,當(dāng)類銷毀的時(shí)候,關(guān)系結(jié)束。相比依賴講,關(guān)聯(lián)關(guān)系的生存期更長(zhǎng)。

關(guān)聯(lián)關(guān)系的細(xì)化關(guān)聯(lián)關(guān)系又可以細(xì)化為聚合關(guān)系和組合關(guān)系聚合關(guān)系圖:組合關(guān)系圖:組合關(guān)系圖:1知1 jft*?———>I聚合和組合的區(qū)別:都是關(guān)聯(lián)的由于聚合和組合都是特殊的關(guān)聯(lián)關(guān)系, 在生成的代碼上看不出區(qū)別,都是關(guān)聯(lián)的形式。那到底這兩種關(guān)系如何來區(qū)分呢。區(qū)分的關(guān)鍵有兩點(diǎn):①構(gòu)造函數(shù)不同聚合關(guān)系下:雁群類(GooseGroup和大雁類(Goose代碼如下:publicclassGooseGroup{publi匚Goosegoose;publicGooseGroup(Goosegoose)(this.goose=goose;}組合關(guān)系下:大雁類(Goose)和翅膀類(Wings)代碼如下:publicclassGoose{publicWingswings;publicGooseOfwings=newWingsO;}這兩種關(guān)系的區(qū)別在于:構(gòu)造函數(shù)不同聚合類的構(gòu)造函數(shù)中包含了另一個(gè)類作為參數(shù)。雁群類(GooseGroup的構(gòu)造函數(shù)中要用到大雁(Goose作為參數(shù)傳遞進(jìn)來。大雁類(Goose)可以脫離雁群類而獨(dú)立存在。組合類的構(gòu)造函數(shù)中包含了另一個(gè)類的實(shí)例化。表明大雁類在實(shí)例化之前,一定要先實(shí)例化翅膀類(Wings),這兩個(gè)類緊密的耦合在一起,同生共滅。翅膀類(Wings)是不可以脫離大雁類(Goose)而獨(dú)立存在信息的封裝性不同在聚合關(guān)系中,客戶端可以同時(shí)了解雁群類和大雁類,因?yàn)樗麄兌际仟?dú)立的而在組合關(guān)系中,客戶端只認(rèn)識(shí)大雁類,根本就不知道翅膀類的存在,因?yàn)槌岚蝾惐粐?yán)密的封裝在大雁類中。<3>泛化泛化就是一個(gè)類繼承另一個(gè)類所有的描述,并且可以根據(jù)需要對(duì)父類進(jìn)行拓展,是面向?qū)ο蟮闹匾卣髦?。泛化使用一根?shí)線加箭頭,泛化關(guān)系圖

泛化的用處:①實(shí)現(xiàn)了代碼的復(fù)用②實(shí)現(xiàn)了多態(tài)<4>實(shí)現(xiàn)主要針對(duì)接口和抽象類而言,實(shí)現(xiàn)接口和抽象類的類必

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論