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

下載本文檔

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

文檔簡介

會計學(xué)1清華大學(xué)信息學(xué)院軟件工程補充OO概念怎樣劃分模塊:·功能:每個模塊做且僅做一件事;·數(shù)據(jù)結(jié)構(gòu):每個模塊僅容納一個數(shù)據(jù)結(jié)構(gòu)·事件驅(qū)動:每個模塊識別一個事件且對這個事件做出反應(yīng);·現(xiàn)實世界中的事物:每個模塊對應(yīng)現(xiàn)實世界中的唯一一件事物(稱之為對象)。

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

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

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

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

圖3.3Tom

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

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

第7頁/共44頁(3)消息:對象發(fā)出的服務(wù)請求稱為消息

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

繼承關(guān)系

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(Overriding)例圖3.16(b)

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

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

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

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

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

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

對象互相通信,即一個對象發(fā)消息給另一個對象,執(zhí)行某些行為或又發(fā)消息給另外的對象,從而執(zhí)行系統(tǒng)的功能。

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

多態(tài)性意味著一個操作在不同子類中可以有不同的實現(xiàn)方式。如Dance的實現(xiàn)Male和Female是不同的。第23頁/共44頁

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

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

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

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

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

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

TheinsideofobjectTom.OnlythebehaviorforJumpisshown.第34頁/共44頁ClasspersonInformationIdAgeFriendAddress...PartsmyLeftlegmyRightlegmyHeadmyBodymyRightArmmyLeftArm…BehaviorStoreAgeAge?JumpWalk...Dance...…Figure3.10Tom,MaryandJohnareallinstancesoftheclassPerson.CreateanInstanceCreatemyLeftLegCreatemyRightLegCreatemyHeadCreatemyBody…InstanceofTomMaryJohnInstanceof第35頁/共44頁Parts:myLegfromclassLegmyHeadfromclassHead...ClassBodyClassHeadClassLegFigure3.11Instancesofoneclasscanrecognizeinstancesofanother.Therelevantclassesaredefinedintheoriginalclass.第36頁/共44頁Operation:StoreAgeJumpDanceWalk...Operation:StoreAgeJumpDanceWalk...ClassMaleClass

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

MaleDanceJumpOldMaleDanceJumpFemalePersoninsinsinsStoreAgeAge?Walk...DanceJumpDanceJumpDance(new)insinsPersonFemale

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論