面向?qū)ο蟮幕靖拍?課件_第1頁(yè)
面向?qū)ο蟮幕靖拍?課件_第2頁(yè)
面向?qū)ο蟮幕靖拍?課件_第3頁(yè)
面向?qū)ο蟮幕靖拍?課件_第4頁(yè)
面向?qū)ο蟮幕靖拍?課件_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1.3面向?qū)ο蟮幕靖拍?.3.1背景

50年代為了讓計(jì)算機(jī)作些有用的事情,人們必須充分利用計(jì)算機(jī)硬件的性能,精確地計(jì)算并分配存貯字和指令的時(shí)鐘周期,程序結(jié)構(gòu)是整體式如同一塊鐵板,隨著計(jì)算機(jī)硬件的發(fā)展,人們逐漸認(rèn)識(shí)到如同鐵板一塊般的整體式程序雖然是解決問題的最有效的方案,但并不是最佳方案,越來越注重程序的可理解性,提出了模塊化的程序結(jié)構(gòu)。怎樣劃分模塊:·(按)功能:每個(gè)模塊做且僅做一件事;·數(shù)據(jù)結(jié)構(gòu):每個(gè)模塊僅容納一個(gè)數(shù)據(jù)結(jié)構(gòu)·事件驅(qū)動(dòng):每個(gè)模塊識(shí)別一個(gè)事件且對(duì)這個(gè)事件做出反應(yīng);·現(xiàn)實(shí)世界中的事物:每個(gè)模塊對(duì)應(yīng)現(xiàn)實(shí)世界中的唯一一件事物(稱之為對(duì)象)。

面向?qū)ο螅∣bject-Oriented)不僅是一些具體的軟件開發(fā)技術(shù)與策略,而且是一整套關(guān)于如何看待軟件系統(tǒng)與現(xiàn)實(shí)世界的關(guān)系以及如何進(jìn)行系統(tǒng)構(gòu)造的軟件方法學(xué)。特點(diǎn):(1)面向?qū)ο蟮募夹g(shù)建立的模型與客觀世界一致,因而便于理解(圖3.1);(2)適應(yīng)變化的需要,修改局限在模塊中;(3)可復(fù)用性1.3.2對(duì)象(Object)一般意義來講,對(duì)象是現(xiàn)實(shí)世界中存在的一個(gè)事物,可以是有形的,如一個(gè)桌子,可以是無形的,如一個(gè)開發(fā)項(xiàng)目。對(duì)象是構(gòu)成現(xiàn)實(shí)世界的一個(gè)獨(dú)立的單位,具有自己的靜態(tài)特征(用數(shù)據(jù)描述)和動(dòng)態(tài)特征(行為或具有的功能)。舉例:張三、李四。(2)信息隱藏:從對(duì)象外部看不知道對(duì)象的信息是怎樣定義的,不知道操作是如何實(shí)現(xiàn)的,只知道有什么操作。

信息:如年齡、性別,又稱對(duì)象的狀態(tài)。什么類型?長(zhǎng)度?

操作:用于存取信息,也可以與內(nèi)部信息無關(guān),如跳舞。(3)對(duì)象間的關(guān)系:例如,發(fā)票對(duì)象知道顧客對(duì)象,哪個(gè)顧客哪個(gè)單位要開發(fā)票。人可以知道另一個(gè)人,相互認(rèn)識(shí)。兩種關(guān)系:

靜態(tài)關(guān)系:長(zhǎng)期存在的關(guān)系,兩個(gè)對(duì)象相互知道對(duì)方是否存在。例:組成關(guān)系是一種靜態(tài)關(guān)系,Tom是由他的頭、胳膊、腿和軀干組成。圖3.4為什么將人劃分成幾個(gè)組成部分?—便于理解,實(shí)現(xiàn),可復(fù)用。(兩個(gè)胳膊復(fù)用)

動(dòng)態(tài)關(guān)系:對(duì)象間互相進(jìn)行通信。例:跳舞,一個(gè)人請(qǐng)另一個(gè)人一起跳舞,動(dòng)態(tài)地建立關(guān)系。(4)如何定義信息和行為:圖3.6從對(duì)象內(nèi)部看。(5)消息:對(duì)象發(fā)出的服務(wù)請(qǐng)求稱為消息(用來激發(fā)對(duì)象的一個(gè)行為)。1.3.3類和實(shí)例系統(tǒng)是由許多相互通信的對(duì)象組成的,對(duì)象有些共同的特征,根據(jù)特征可以將對(duì)象分組,稱為類。如:Tom、Mary和John三個(gè)人有類似的行為和信息結(jié)構(gòu)。因此可以定義Person類。(3)怎樣劃分類把類Person中共同的信息和操作提取出來,放在一個(gè)類中,實(shí)際上具有不同的屬性。如由于性別不同,因此建立兩個(gè)新類Male和Female。如圖3.12,圖3.13。

共同:這兩個(gè)類有共同的信息和行為,Age,F(xiàn)riend,Address,Jump,Walk應(yīng)該抽象出來,避免重復(fù),這在以后討論。不同:Dance,Husband,Wife(4)怎樣建立一個(gè)實(shí)例:由類的行為建立實(shí)例。圖3.10(相對(duì)于對(duì)象的行為)

總結(jié):類定義了對(duì)象的操作和信息結(jié)構(gòu),實(shí)例是由類建立的,定義了對(duì)象的狀態(tài)。1.3.4繼承性(1)概念:類之間具有共性(信息結(jié)構(gòu)和行為),抽取出來放在一個(gè)一般類中,如把Male和Female中共同的特性放在Person類中,不同的特性放在特殊類中分別描述,特殊類的對(duì)象擁有一般類的全部屬性與服務(wù),稱作特殊類對(duì)一般類的繼承。Male和Female類可以從Person類繼承共性,這樣避免了重復(fù)。見圖3.14復(fù)用共同的描述,繼承性往往被看作是軟件復(fù)用的核心概念。(2)好處:易編程、易理解代碼短,結(jié)構(gòu)清晰易修改共同部分只要在一處修改即可易增加新類只須描述不同部分術(shù)語(yǔ):

父類—子類,一般—特殊,祖先––后代,基類––派生類,直接父類,直接子類表示:帶箭頭的虛線父類不知道子類子類知道父類增加一個(gè)新類:OldMale與已有類的關(guān)系是什么樣的?見圖3.16有三種方案:(a)OldMale和Male中有共性(b)OldMale中修改Male中Dance的功能(c)新建一個(gè)類youngMale,oldMale與youngMale中有不同的特性到底選擇哪一種方案,具體情況而定,第三種情況結(jié)構(gòu)清楚,但要修改原有的類。第一種增加一個(gè)類oldMale重復(fù)太多,概念不清楚,不可取;(不修改原有的類)第二種增加新類繼承關(guān)系中Dance具有不同的行為,第三種只增加不同的部分,共同部分放在Male中,是可取的。但如再增加一類小男孩,則還會(huì)涉及修改Male。(不修改原有的類)權(quán)衡選擇第二、三種。繼承層次中增加的新類的4種方法:①在繼承類中,由下向上找一個(gè)合適的類作為父類;②完全獨(dú)立的一個(gè)類,不能在已有的類中繼承③重新構(gòu)造繼承層次,見圖3.17。加ABF類,找不到一個(gè)合適的類作為直接父類,重新構(gòu)造原來的層次。好處:層次結(jié)構(gòu)清楚;問題:a.找出更好的層次結(jié)構(gòu)b.修改工作量較大。(5)多繼承如果一個(gè)類需要用到多個(gè)已有類的特征,可以從多個(gè)類中繼承,稱為多繼承。這意味著一個(gè)類可以有多個(gè)直接的祖先。例如船屋是可以從房子和船這兩個(gè)類繼承得到一個(gè)類,從兩個(gè)類中抽取共同的部分構(gòu)成一個(gè)新的類,圖3.19,重新構(gòu)造類的結(jié)構(gòu)。

問題:繼承層次結(jié)構(gòu)不好理解。如果祖先中具有相同名字但不同定義的操作時(shí),產(chǎn)生問題;到底繼承的是什么操作;

解決:用戶必須選擇某個(gè)祖先的定義或重新定義操作,圖3.20,共同的祖先,重新定義過,名字沖突問題。1.3.5多態(tài)性對(duì)象互相通信,即一個(gè)對(duì)象發(fā)消息給另一個(gè)對(duì)象,執(zhí)行某些行為或又發(fā)消息給另外的對(duì)象,從而執(zhí)行系統(tǒng)的功能。

發(fā)送消息的對(duì)象可能不知道另一個(gè)對(duì)象的類。例如在上述例子中,一個(gè)人的朋友可以是男的,也可以是女的,例如Tom的朋友可能是John或Mary,因此對(duì)于Male類的對(duì)象不知道朋友實(shí)例將屬于哪一類。

多態(tài)性意味著一個(gè)操作在不同類中可以有不同的實(shí)現(xiàn)方式。如Dance的實(shí)現(xiàn)Male和Female是不同的。1.3.6總結(jié):(1)面向?qū)ο笫且环N建模的技術(shù),由于它與人們認(rèn)識(shí)世界的方法非常一致,所以建立的模型容易理解。(2)對(duì)象有類似性因而用類來描述;類描述了類似對(duì)象的行為和信息,①封裝性使用者不需知道怎樣實(shí)現(xiàn),只要知道它的外部功能,因此修改可局限在類的內(nèi)部,系統(tǒng)易維護(hù)。②多態(tài)性,使對(duì)象可以不必知道與它通信的對(duì)象的確切的類,因此容易增加新類,易擴(kuò)充系統(tǒng)功能,不需修改其它類③使用繼承性可以方便地復(fù)用已有代碼,只需增加新代碼,或修改已有功能時(shí)不必修改已有代碼,只需定義新的行為;繼承性必須正確使用,否則使系統(tǒng)的結(jié)構(gòu)很難理解和不易維護(hù),因?yàn)轭惖南嗤值男袨楣δ芸赡懿煌?/p>

《結(jié)束》HeadBodyArmArmLegLegFigure3.4Amodelofapersoncanbecomposedwiththeobjectshead,legs,armsandbody.ClasspersonInformationAgeFriendAddress...PartsmyLeftlegmyRightlegmyHeadmyBodymyRightArmmyLeftArmBehaviorStoreAgeAge?JumpWalk...Dance...Figure3.10Tom,JohnandMaryareallinstancesoftheclassPerson.CreateanInstanceCreatemyLeftLegcreatemyRightLegCreatemyHeadCreatemyBodyInstanceofTomMaryJohnInstanceofParts:myLegfromclassLegmyHeadfromclassHead...ClassBodyClassHeadClassLegFigure3.11Instancesofoneclasscanrecognizeinstancesofanother.Therelevantclassesaredefinedintheoriginalclass.Information:AgeWifeFrendAddress...PartsmyLeftLegmyRightLegmyHeadmyBodymyRightArmmyLeftArm...BehaviorStoreAgeAge?Walk...CreateanInstance...Figure3.14ClasswithinheritanceClassPersonBehaviorJumpDance...BehaviorJumpDance...ClassMaleClassFemaleinheritsinheritsStoreAgeAge?Walk...DanceJump

MaleDanceJumpOldMaleDanceJumpFemalePersoninsinsinsStoreAgeAge?Walk...DanceJumpDanceJumpDance(new)insinsPersonFemaleMaleOldMaleStoreAgeAge?Walk...DanceJumpPersoninsDanceJumpMaleinsDanceDanceinsins

OldMaleYoungMaleFigure3.16Female(a)(b)(c)A+BC=(ABC)+E=(ABCE)+D=(ABCD)ABFWeWantinheritsinheritsinheritsA+B=(AB)inherits+C=(ABC)+F=(ABF)+D=(ABCD)+E=(ABCE)inheritsinheritsinheritsinheritsbecomeswithrestructuringNewclassaddedWantedclassFigure3.17Existingclasses:ABCEFGAEWewant:restructuringAE+BC=(ABC)=(AE)+FG=(EFG)insinsinsinsNewclassesFigure3.19Multipleinheritance.Themiddleclassinheritsthedescriptionsfromtwootherclasses.A

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論