清華大學(xué)信息學(xué)院軟件工程補(bǔ)充OO概念_第1頁(yè)
清華大學(xué)信息學(xué)院軟件工程補(bǔ)充OO概念_第2頁(yè)
清華大學(xué)信息學(xué)院軟件工程補(bǔ)充OO概念_第3頁(yè)
清華大學(xué)信息學(xué)院軟件工程補(bǔ)充OO概念_第4頁(yè)
清華大學(xué)信息學(xué)院軟件工程補(bǔ)充OO概念_第5頁(yè)
已閱讀5頁(yè),還剩39頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

會(huì)計(jì)學(xué)1清華大學(xué)信息學(xué)院軟件工程補(bǔ)充OO概念怎樣劃分模塊:·功能:每個(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é)。第1頁(yè)/共44頁(yè)特點(diǎn):(1)面向?qū)ο蟮募夹g(shù)建立的模型與客觀世界一致,因而便于理解(圖3.1);(2)適應(yīng)變化的需要,修改局限在模塊中;(3)可復(fù)用性1.3.2對(duì)象(Object)一般意義來(lái)講,對(duì)象是現(xiàn)實(shí)世界中存在的一個(gè)事物,可以是有形的,如一個(gè)桌子,可以是無(wú)形的,如一個(gè)開發(fā)項(xiàng)目。對(duì)象是構(gòu)成現(xiàn)實(shí)世界的一個(gè)獨(dú)立的單位,具有自己的靜態(tài)特征(用數(shù)據(jù)描述)和動(dòng)態(tài)特征(行為或具有的功能)。舉例:人,圖3.2第2頁(yè)/共44頁(yè)

軟件系統(tǒng)中抽象地表示現(xiàn)實(shí)世界中的對(duì)象,數(shù)據(jù)表示特征,用操作表示對(duì)象的行為。例Tom:姓名、年齡、職業(yè)等特征,跑、跳等行為;(1)定義:對(duì)象是系統(tǒng)中用來(lái)描述客觀事物的一個(gè)實(shí)體,是構(gòu)成系統(tǒng)的一個(gè)基本單位,由一組屬性和一組對(duì)屬性進(jìn)行操作的服務(wù)組成。如何定義屬性和行為:圖3.6從對(duì)象內(nèi)部看。

第3頁(yè)/共44頁(yè)TomInformationAgeWifeFriendAddress...PartsmyLeftlegmyRightlegmyHeadmyBodymyRightArmmyLeftArmBehaviorStoreAge…Age?…JumpBendmyLeftLegandmyRightLegStretchmyLeftLegandmyRightLegLiftmyRightArm...Walk...Dance......Figure3.6

TheinsideofobjectTom.OnlythebehaviorforJumpisshown.第4頁(yè)/共44頁(yè)(2)信息隱藏:從對(duì)象外部看不知道對(duì)象的信息是怎樣定義的,不知道操作是如何實(shí)現(xiàn)的,只知道有什么操作。

圖3.3Tom

又稱封裝(encapsulation),把對(duì)象的屬性和服務(wù)結(jié)合成一個(gè)獨(dú)立的系統(tǒng)單位,并盡可能地隱蔽對(duì)象的內(nèi)部細(xì)節(jié)。OperationsStoreAgeAge?WalkDanceJump第5頁(yè)/共44頁(yè)

封裝使得對(duì)象對(duì)外形成一道屏障,從對(duì)象的外部不能直接的存取(處理)對(duì)象的屬性,只能通過(guò)對(duì)象的幾個(gè)供外部使用的服務(wù)處理對(duì)象的屬性。好處:避免外部錯(cuò)誤對(duì)一個(gè)模塊的影響。只通過(guò)對(duì)外接口提供服務(wù),修改局限在一個(gè)模塊中。封裝是面向?qū)ο蠓椒ǖ囊粋€(gè)原則,也是面向?qū)ο蠹夹g(shù)的一種機(jī)制。它帶來(lái)的問題是增加了編程的工作量和運(yùn)行開銷。一些OO語(yǔ)言采用折中的方法,程序員可以指定那些屬性和服務(wù)是可見的。第6頁(yè)/共44頁(yè)

第7頁(yè)/共44頁(yè)(3)消息:對(duì)象發(fā)出的服務(wù)請(qǐng)求稱為消息

(用來(lái)激發(fā)對(duì)象的一個(gè)行為)。應(yīng)該包含以下信息:提供服務(wù)的對(duì)象標(biāo)識(shí)服務(wù)標(biāo)識(shí)輸入信息和回答信息對(duì)象通過(guò)消息進(jìn)行相互通信,這是遵循封裝原則的對(duì)象之間動(dòng)態(tài)聯(lián)系的唯一合法途徑。第8頁(yè)/共44頁(yè)(3)對(duì)象間的關(guān)系:

繼承關(guān)系

組成關(guān)系:又稱作整體-部分關(guān)系(靜態(tài),長(zhǎng)期存在的關(guān)系,兩個(gè)對(duì)象相互知道對(duì)方是否存在)。Tom是由他的頭、胳膊、腿和軀干組成。圖3.4

為什么將人劃分成幾個(gè)組成部分?便于理解、實(shí)現(xiàn),可復(fù)用。(胳膊)

實(shí)例連接:發(fā)票對(duì)象知道顧客對(duì)象,哪個(gè)顧客哪個(gè)單位要開發(fā)票。配偶。

消息連接:(動(dòng)態(tài))對(duì)象間互相進(jìn)行通信。例:跳舞,一個(gè)人請(qǐng)另一個(gè)人一起跳舞,動(dòng)態(tài)地建立關(guān)系。第9頁(yè)/共44頁(yè)1.3.3類和實(shí)例系統(tǒng)是由許多相互通信的對(duì)象組成的,對(duì)象有些共同的特征,根據(jù)特征可以將對(duì)象分組,稱為類。如:Tom、Mary和John三個(gè)人有類似的行為和信息結(jié)構(gòu)。因此可以定義Person類。

(1)類的定義:類是某些對(duì)象的模板,抽象地描述了屬于該類的全部對(duì)象的內(nèi)部結(jié)構(gòu),同一類對(duì)象的屬性和服務(wù)。第10頁(yè)/共44頁(yè)(2)實(shí)例的定義:實(shí)例是由類建立的對(duì)象。對(duì)象有自己的存儲(chǔ)空間,用來(lái)保存自己的屬性值。類描述了實(shí)例的結(jié)構(gòu),實(shí)例的當(dāng)前狀態(tài),是由實(shí)例執(zhí)行的操作定義的。

舉例:圖3.10Tom、John和Mary是類Person的實(shí)例,不同的實(shí)例有自己的標(biāo)識(shí),具有各自的信息(狀態(tài))。由于執(zhí)行的操作可能不同,因此狀態(tài)也不同。第11頁(yè)/共44頁(yè)(3)怎樣劃分類把對(duì)象中共同的屬性和操作提取出來(lái),放在一個(gè)類Person中。對(duì)象Tom、John和Mary實(shí)際上具有不同的屬性。如性別不同,可以建立兩個(gè)類Male和Female。如圖3.12,圖3.13。

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

總結(jié):類定義了對(duì)象的服務(wù)和屬性結(jié)構(gòu),實(shí)例是由類建立的,定義了對(duì)象的狀態(tài)。第12頁(yè)/共44頁(yè)1.3.4繼承性(1)概念:類之間具有共性(信息結(jié)構(gòu)和行為),抽取出來(lái)放在一個(gè)一般類中,如把Male和Female中共同的特性放在Person類中,不同的特性放在特殊類中分別描述,特殊類的對(duì)象擁有一般類的全部屬性與服務(wù),稱作特殊類對(duì)一般類的繼承。

Male和Female類可以從Person類繼承共性,這樣避免了重復(fù)。見圖3.14

復(fù)用共同的描述,繼承性往往被看作是軟件復(fù)用的核心概念。第13頁(yè)/共44頁(yè)(2)好處:易編程、易理解代碼短,結(jié)構(gòu)清晰易修改共同部分只要在一處修改即可易增加新類只須描述不同部分術(shù)語(yǔ):

父類—子類,一般—特殊,祖先––后代,基類––派生類,直接父類,直接子類表示:帶箭頭的虛線父類不知道子類子類知道父類第14頁(yè)/共44頁(yè)(3)怎樣建立一個(gè)好的繼承層次類可以從父類繼承,父類又可以從它的父類繼承,形成多層次的繼承結(jié)構(gòu)。當(dāng)增加一個(gè)新類時(shí),不一定在最低層,可能需要插在中間層,這樣可能破壞原來(lái)的層次結(jié)構(gòu),或需要調(diào)整原來(lái)的層次結(jié)構(gòu)。例:圖3.14上例中增加兩個(gè)對(duì)象James和Lawrence都是男性的老人,他們與年青人有什么不同呢?跳舞的動(dòng)作不同,比較慢。第15頁(yè)/共44頁(yè)

增加一個(gè)新類:OldMale與已有類的關(guān)系是什么樣的?見圖3.16有三種方案:(a)OldMale和Male中有共性(b)OldMale中修改Male中Dance的功能(c)新建一個(gè)類youngMale,oldMale與youngMale中有不同的特性到底選擇哪一種方案,具體情況而定,第三種情況結(jié)構(gòu)清楚,但要修改原有的類。第16頁(yè)/共44頁(yè)第一種增加一個(gè)類oldMale重復(fù)太多,概念不清楚,不可取。(不修改原有的類)第二種增加新類繼承關(guān)系中Dance具有不同的行為。(不修改原有的類)第三種新類只增加不同的部分,共同部分放在Male中,是可取的。但需要修改Male類以及類的層次結(jié)構(gòu)。權(quán)衡選擇第二、三種。第17頁(yè)/共44頁(yè)

繼承層次中增加的新類的4種方法:①在繼承類中,由下向上找一個(gè)合適的類作為父類;②完全獨(dú)立的一個(gè)類,不能在已有的類中繼承③重新構(gòu)造繼承層次,見圖3.17。加ABF類,找不到一個(gè)合適的類作為直接父類,重新構(gòu)造原來(lái)的層次。好處:層次結(jié)構(gòu)清楚;問題:a.找出更好的層次結(jié)構(gòu)

b.修改工作量較大。第18頁(yè)/共44頁(yè)④在特殊類中對(duì)繼承來(lái)的屬性或服務(wù)進(jìn)行重新定義,稱為重載

(Overriding)例圖3.16(b)

好處:容易且靈活地修改已有類;問題:在類的層次結(jié)構(gòu)中一些操作具有同樣的名字,但不同的語(yǔ)義(在不同類中),要知道操作的功能,必須向上找到定義操作的類。第19頁(yè)/共44頁(yè)(4)代碼復(fù)用

通過(guò)繼承性可以實(shí)現(xiàn)代碼復(fù)用。

建立(應(yīng)用領(lǐng)域)類庫(kù)。當(dāng)增加新類時(shí),從類庫(kù)中找到一個(gè)適合的類,從中繼承,然后擴(kuò)充或修改得到所需功能。(不必從0開始實(shí)現(xiàn)系統(tǒng))第20頁(yè)/共44頁(yè)

(5)多繼承如果一個(gè)類需要用到多個(gè)已有類的特征,可以從多個(gè)類中繼承,稱為多繼承。這意味著一個(gè)類可以有多個(gè)直接的祖先。例如船屋是可以從房子和船這兩個(gè)類繼承得到一個(gè)類,從兩個(gè)類中抽取共同的部分構(gòu)成一個(gè)新的類,圖3.19,重新構(gòu)造類的結(jié)構(gòu)。第21頁(yè)/共44頁(yè)

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

解決:用戶必須選擇某個(gè)祖先的定義或重新定義操作,圖3.20,共同的祖先,重新定義過(guò),名字沖突問題。第22頁(yè)/共44頁(yè)1.3.5多態(tài)性(polymorphism)

對(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是不同的。第23頁(yè)/共44頁(yè)

定義:在一般類中定義的屬性或服務(wù)被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。動(dòng)態(tài)綁定:(dynamicbinding)在運(yùn)行時(shí)根據(jù)對(duì)象接收的消息動(dòng)態(tài)地確定要連接那一段服務(wù)代碼。

類屬:(generic)服務(wù)參數(shù)的類型可以是參數(shù)化的。第24頁(yè)/共44頁(yè)classshape{pointcenter;public;voidmove(pointto){center=to;draw();}virtualvoiddraw();

virtualvoidrotate(int);…}關(guān)鍵字virtual說(shuō)明函數(shù)在各派生類中提供了名字相同的不同版本。第25頁(yè)/共44頁(yè)Classcircle:publicshape{intradius;public:voiddraw();voidrotate(inti){};}第26頁(yè)/共44頁(yè)main(){shape*p1=newrectangle(point(o,o),point(8,8);shape*p2=newline(point(0,5),(0.10));p1→draw();

p2→draw();…}第27頁(yè)/共44頁(yè)

好處:發(fā)送者只知道另一個(gè)實(shí)例可以執(zhí)行某個(gè)行為,但不知道該實(shí)例屬于哪個(gè)子類。因此多態(tài)性使我們建立的系統(tǒng)很靈活,易擴(kuò)充。如打印功能,打印某頁(yè)到某頁(yè),發(fā)送print命令,打印設(shè)備可以是任意類型??梢允亲宇惖膶?shí)例,增加一種新的打印設(shè)備,不必修改,發(fā)送打印命令的類也不必修改其它設(shè)備的類。第28頁(yè)/共44頁(yè)1.3.6總結(jié):(1)面向?qū)ο笫且环N建模的技術(shù),由于它與人們認(rèn)識(shí)世界的方法非常一致,所以建立的模型容易理解。(2)對(duì)象有類似性因而用類來(lái)描述;類描述了類似對(duì)象的行為和信息,①封裝性使用者不需知道怎樣實(shí)現(xiàn),只要知道它的外部功能,因此修改可局限在類的內(nèi)部,系統(tǒng)易維護(hù)。②多態(tài)性使對(duì)象可以不必知道與它通信的對(duì)象的確切的類,因此容易增加新類,易擴(kuò)充系統(tǒng)功能,不需修改其它類。第29頁(yè)/共44頁(yè)③使用繼承性可以方便地復(fù)用已有代碼,只需增加新代碼,或修改已有功能時(shí)不必修改已有代碼,只需定義新的行為;繼承性必須正確使用,否則使系統(tǒng)的結(jié)構(gòu)很難理解和不易維護(hù),因?yàn)轭惖南嗤值男袨楣δ芸赡懿煌?/p>

《結(jié)束》第30頁(yè)/共44頁(yè)RealitySemanticgapModellivesindrivesHouseTomCarTreeFigure3.1Sinceobjectsfromrealityaredirectlymappedintoobjectsinthemodel,thesemanticgapisminimizedHouseTomCarTree第31頁(yè)/共44頁(yè)TomMaryJohnFigure3.2Tom,MaryandJohnareregardedasobjects.第32頁(yè)/共44頁(yè)HeadBodyArmArmLegLegFigure3.4Amodelofapersoncanbecomposedwiththeobjectshead,legs,armsandbody.第33頁(yè)/共44頁(yè)TomInformationAgeWifeFriendAddress...PartsmyLeftlegmyRightlegmyHeadmyBodymyRightArmmyLeftArmBehaviorStoreAge…Age?…JumpBendmyLeftLegandmyRightLegStretchmyLeftLegandmyRightLegLiftmyRightArm...Walk...Dance......Figure3.6

TheinsideofobjectTom.OnlythebehaviorforJumpisshown.第34頁(yè)/共44頁(yè)ClasspersonInformationIdAgeFriendAddress...PartsmyLeftlegmyRightlegmyHeadmyBodymyRightArmmyLeftArm…BehaviorStoreAgeAge?JumpWalk...Dance...…Figure3.10Tom,MaryandJohnareallinstancesoftheclassPerson.CreateanInstanceCreatemyLeftLegCreatemyRightLegCreatemyHeadCreatemyBody…InstanceofTomMaryJohnInstanceof第35頁(yè)/共44頁(yè)P(yáng)arts:myLegfromclassLegmyHeadfromclassHead...ClassBodyClassHeadClassLegFigure3.11Instancesofoneclasscanrecognizeinstancesofanother.Therelevantclassesaredefinedintheoriginalclass.第36頁(yè)/共44頁(yè)Operation:StoreAgeJumpDanceWalk...Operation:StoreAgeJumpDanceWalk...ClassMaleClass

FemaleinstanceofTomJohnMaryinstanceofinstanceofFigure3.12MaleandFemaleareseparateclasses.第37頁(yè)/共44頁(yè)Information:AgeHusandFrendAddress...PartsmyLeftLegmyRightLegmyHeadmyBodymyRightArmmyLeftArm...BehaviorJumpWalkDanceAskfriendtoDanceJumpWalkJumpShakemyHeadShakemyBodyBendmyRightLegStretchmyRightLeg...CreateanInstance...Information:AgeWifeFrendAddress...PartsmyLeftLegmyRightLegmyHeadmyBodymyRightArmmyLeftArm...BehaviorJumpWalkDanceJumpShakemyBodyJumpShakemyHeadJupm...CreateanInstance...Figure3.13TheinsideofclassMaleandFemaleClassFemaleClassMale第38頁(yè)/共44頁(yè)Information:AgeSpouseFrendAddress...PartsmyLeftLegmyRightLegmyHeadmyBodymyRightArmmyLeftArm...BehaviorStoreAgeAge?Walk...CreateanInstance...Figure3.14ClasswithinheritanceClassPersonBehaviorJumpDance...BehaviorJumpDance...ClassMaleClassFemaleinheritsinherits第39頁(yè)/共44頁(yè)StoreAgeAge?Walk...DanceJump

MaleDanceJumpOldMaleDanceJumpFemalePersoninsinsinsStoreAgeAge?Walk...DanceJumpDanceJumpDance(new)insinsPersonFemale

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論