面向?qū)ο蠓椒ǜ攀鼍x課件_第1頁(yè)
面向?qū)ο蠓椒ǜ攀鼍x課件_第2頁(yè)
面向?qū)ο蠓椒ǜ攀鼍x課件_第3頁(yè)
面向?qū)ο蠓椒ǜ攀鼍x課件_第4頁(yè)
面向?qū)ο蠓椒ǜ攀鼍x課件_第5頁(yè)
已閱讀5頁(yè),還剩48頁(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)介

1、面向?qū)ο蠓椒ǜ攀?第1頁(yè),共53頁(yè)。面向?qū)ο蠓椒ǜ攀雒嫦驅(qū)ο蠓椒ǖ慕M成什么是面向?qū)ο竺嫦驅(qū)ο蠹夹g(shù)的發(fā)展歷史面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮能浖こ谭椒?第2頁(yè),共53頁(yè)。面向?qū)ο蠓椒ǜ庞[第3頁(yè),共53頁(yè)。1 什么是面向?qū)ο?面向?qū)ο螅∣bject Oriented)技術(shù)是軟件工程領(lǐng)域中的重要技術(shù),這種軟件開(kāi)發(fā)思想比較自然地模擬了人類認(rèn)識(shí)客觀世界的方式,成為當(dāng)前計(jì)算機(jī)軟件工程學(xué)中的主流方法。應(yīng)該特別強(qiáng)調(diào)的是,面向?qū)ο蠹夹g(shù)不僅僅是一種程序設(shè)計(jì)方法,更重要的是一種對(duì)真實(shí)世界的抽象思維方式。 第4頁(yè),共53頁(yè)。1 什么是面向?qū)ο竺嫦驅(qū)ο蠓椒ò凑杖祟惖淖匀凰季S方式,面對(duì)客觀世界建立軟件系統(tǒng)模型:對(duì)象、類、繼

2、承、封裝等基本概念符合人類的自然思維方式。有利于對(duì)業(yè)務(wù)領(lǐng)域和系統(tǒng)責(zé)任的理解。有利于人員的交流第5頁(yè),共53頁(yè)。1 什么是面向?qū)ο?面向?qū)ο蠹夹g(shù)的基本觀點(diǎn)如下:(1) 客觀世界是由對(duì)象組成的,任何客觀的事物或?qū)嶓w都是對(duì)象,復(fù)雜的對(duì)象可以由簡(jiǎn)單的對(duì)象組成。(2) 具有相同數(shù)據(jù)和相同操作的對(duì)象可以歸并為一個(gè)類,對(duì)象是對(duì)象類的一個(gè)實(shí)例。(3) 類可以派生出子類,子類繼承父類的全部特性(數(shù)據(jù)和操作),又可以有自己的新特性。子類與父類形成類的層次結(jié)構(gòu)。(4) 對(duì)象之間通過(guò)消息傳遞相互聯(lián)系。類具有封裝性,其數(shù)據(jù)和操作等對(duì)外界是不可見(jiàn)的,外界只能通過(guò)消息請(qǐng)求進(jìn)行某些操作,提供所需要的服務(wù)。 第6頁(yè),共53頁(yè)。

3、1 什么是面向?qū)ο?軟件工程學(xué)家Codd和Yourdon認(rèn)為: 面向?qū)ο髮?duì)象類繼承通信 如果一個(gè)軟件系統(tǒng)采用這些概念來(lái)建立模型并予以實(shí)現(xiàn),那么它就是面向?qū)ο蟮?。?頁(yè),共53頁(yè)。2 面向?qū)ο蠹夹g(shù)的發(fā)展歷史 面向?qū)ο蠓椒ㄆ鹪从诿嫦驅(qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,后來(lái)才逐步形成了面向?qū)ο蟮姆治龊驮O(shè)計(jì)方法,其發(fā)展過(guò)程大體上經(jīng)歷了初始階段、發(fā)展階段和成熟階段等過(guò)程。第8頁(yè),共53頁(yè)。2 面向?qū)ο蠹夹g(shù)的發(fā)展歷史 初始階段60年代末挪威奧斯陸大學(xué)和挪威計(jì)算中心共同研制的Simula語(yǔ)言是面向?qū)ο笳Z(yǔ)言發(fā)展歷史上的第一個(gè)里程碑,它首先引入了類的概念和繼承機(jī)制,后來(lái)的一些著名面向?qū)ο缶幊陶Z(yǔ)言(如Smalltalk、C+、Ei

4、ffel)都受到Simula的啟發(fā)。 KRISTEN NYGAARD(Simula創(chuàng)始人)第9頁(yè),共53頁(yè)。2 面向?qū)ο蠹夹g(shù)的發(fā)展歷史 初始階段80年代,Xerox研究中心推出了Smalltalk語(yǔ)言和環(huán)境,它具備了面向?qū)ο笳Z(yǔ)言的繼承和封裝的主要特征,使面向?qū)ο蟪绦蛟O(shè)計(jì)方法趨于完善,掀起了面向?qū)ο笱芯康母叱?。?0頁(yè),共53頁(yè)。2 面向?qū)ο蠹夹g(shù)的發(fā)展歷史 發(fā)展階段從80年代中期到90年代,面向?qū)ο笳Z(yǔ)言十分熱門,大批比較實(shí)用的面向?qū)ο缶幊陶Z(yǔ)言(Object Oriented Programming Language,OOPL)涌現(xiàn)出來(lái),如C+、Objective-C、Object Pascal、

5、CLOS(Common Lisp Object System)、Eiffel、Actor等,特別是C+語(yǔ)言已成為目前應(yīng)用最廣泛的OOPL。Bjarne Stroustrup(C+創(chuàng)始人)第11頁(yè),共53頁(yè)。2 面向?qū)ο蠹夹g(shù)的發(fā)展歷史 發(fā)展階段90年代中期,出現(xiàn)了JAVA語(yǔ)言。 JAMES GOSLING第12頁(yè),共53頁(yè)。2 面向?qū)ο蠹夹g(shù)的發(fā)展歷史 發(fā)展階段從80年代中期到90年代,面向?qū)ο笳Z(yǔ)言十分熱門,大批比較實(shí)用的面向?qū)ο缶幊陶Z(yǔ)言(Object Oriented Programming Language,OOPL)涌現(xiàn)出來(lái),如C+、Objective-C、Object Pascal、CLO

6、S(Common Lisp Object System)、Eiffel、Actor等,特別是C+語(yǔ)言已成為目前應(yīng)用最廣泛的OOPL。面向?qū)ο缶幊陶Z(yǔ)言的繁榮是面向?qū)ο蠓椒ㄗ呦驅(qū)嵱玫闹匾獦?biāo)志,也是面向?qū)ο蠓椒ㄔ谟?jì)算機(jī)學(xué)術(shù)界、產(chǎn)業(yè)界和教育界日益受到重視的推動(dòng)力。 第13頁(yè),共53頁(yè)。2 面向?qū)ο蠹夹g(shù)的發(fā)展歷史 成熟階段在C+語(yǔ)言十分熱門的時(shí)候,人們開(kāi)始了對(duì)面向?qū)ο蠓治觯∣bject Oriented Anlysis,OOA)的研究,進(jìn)而延伸到面向?qū)ο笤O(shè)計(jì)(Object Oriented Design,OOD)。特別是90年代以后,許多專家都在嘗試用不同的方法進(jìn)行面向?qū)ο蟮姆治雠c設(shè)計(jì),其中比較著名的有

7、Booch的方法、Rumbaugh的OMT方法、Coad/Yourdon的方法、Wirtf-Brock的RDD方法、Shlear-Mellor的方法、Gibon的OBA方法、Jacobson的OOSE方法、Martin-Odell的方法、Fusion方法等,這些方法各有所長(zhǎng),力圖解決復(fù)雜軟件系統(tǒng)的開(kāi)發(fā)問(wèn)題。在這段時(shí)期,面向?qū)ο蟮姆治龊驮O(shè)計(jì)技術(shù)逐漸走向?qū)嵱?,最終形成了從分析、設(shè)計(jì)到編程、測(cè)試與維護(hù)一整套的軟件工程體系。 第14頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍?對(duì)象對(duì)象從不同的角度有不同的含義,我們針對(duì)系統(tǒng)開(kāi)發(fā)來(lái)討論對(duì)象的概念,其定義是:對(duì)象(Object)是系統(tǒng)中用來(lái)描述客觀事物的一個(gè)實(shí)體,

8、它是構(gòu)成系統(tǒng)的一個(gè)基本單位,由一組屬性和對(duì)這組屬性進(jìn)行操作的一組服務(wù)組成。在這里,屬性和服務(wù)是構(gòu)成對(duì)象的兩個(gè)基本要素,其定義是:屬性是用來(lái)描述對(duì)象靜態(tài)特征的一個(gè)數(shù)據(jù)項(xiàng)。服務(wù)是用來(lái)描述對(duì)象動(dòng)態(tài)特征(行為)的一個(gè)操作序列。 第15頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍?例子:第16頁(yè),共53頁(yè)。面向?qū)ο蟮幕靖拍睿ɡ樱?What are the games objects? What do those objects knowhow to do? What properties do they have?第17頁(yè),共53頁(yè)。面向?qū)ο蟮幕靖拍睿ɡ樱¦hat are the games objec

9、ts? piece, boardCapabilities: What do those objects know how to do? piece: be created fall rotate stop at collision board: be created remove rows check for end of game Properties: What attributes and components do they have? piece: orientation position shape color board: size rows第18頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕?/p>

10、概念 從一般意義上講,對(duì)象是現(xiàn)實(shí)世界中的一個(gè)實(shí)際存在的事物,它可以是有形的,如車輛、房屋等,也可以是無(wú)形的,如國(guó)家、生產(chǎn)計(jì)劃等。而人們?cè)陂_(kāi)發(fā)一個(gè)系統(tǒng)時(shí),則在一定的范圍(也稱問(wèn)題域)內(nèi)考慮和認(rèn)識(shí)與系統(tǒng)目標(biāo)有關(guān)的事物,并用系統(tǒng)中的對(duì)象來(lái)抽象地表示它們。在這里,對(duì)象只描述客觀事物本質(zhì)的、與系統(tǒng)目標(biāo)有關(guān)的特征,而不考慮那些非本質(zhì)的、與系統(tǒng)目標(biāo)無(wú)關(guān)的特征。同時(shí),對(duì)象是屬性和服務(wù)的結(jié)合體,對(duì)象的屬性值只能由這個(gè)對(duì)象的服務(wù)來(lái)讀取和修改。 第19頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍铑愵悾–lass)是具有相同屬性和服務(wù)的一組對(duì)象的集合,它為屬于該類的全部對(duì)象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和服務(wù)兩個(gè)主要部

11、分。類好比是一個(gè)對(duì)象模板,用它可以產(chǎn)生多個(gè)對(duì)象。類所代表的是一個(gè)抽象的概念或事物,在客觀世界中實(shí)際存在的是類的實(shí)例,即對(duì)象。 第20頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍铑惻e例:在學(xué)校教學(xué)管理系統(tǒng)中,“學(xué)生”是一個(gè)類,其屬性具有姓名、性別、年齡等,可以定義“入學(xué)注冊(cè)”、“選課”等操作。一個(gè)具體的學(xué)生“王平”是一個(gè)對(duì)象,也是“學(xué)生”類的一個(gè)實(shí)例。第21頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍铑?把眾多的事物歸納并劃分成一些類是人類在認(rèn)識(shí)客觀世界時(shí)經(jīng)常采用的思維方法,分類的原則是抽象,從那些與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征中找出事物的共性,并將具有共同性質(zhì)的事物劃分成一類,得出一個(gè)抽象的概念。例如:人、房屋、樹(shù)

12、木等都是一些抽象的概念,它們是一些具有共同特征的事物的集合,稱為類。類的概念使我們能對(duì)屬于該類的全部個(gè)體事物進(jìn)行統(tǒng)一的描述,樹(shù)具有樹(shù)根、樹(shù)干、樹(shù)枝和樹(shù)葉,它能進(jìn)行光合作用,這個(gè)描述適合所有樹(shù),而不必對(duì)每一棵具體的樹(shù)進(jìn)行描述。 第22頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍?封裝封裝(Encapsulation)是把對(duì)象的屬性和服務(wù)結(jié)合成一個(gè)獨(dú)立的系統(tǒng)單位,并盡可能隱藏對(duì)象的內(nèi)部細(xì)節(jié)。封裝是面向?qū)ο蠓椒ǖ囊粋€(gè)重要原則,系統(tǒng)中把對(duì)象看成是屬性和對(duì)象的結(jié)合體,使對(duì)象能夠集中而完整地描述一個(gè)具體事物。封裝的信息隱蔽作用反映了事物的相對(duì)獨(dú)立性,當(dāng)我們從外部觀察對(duì)象時(shí),只需要了解對(duì)象所呈現(xiàn)的外部行為(即做什么

13、),而不必關(guān)心它的內(nèi)部細(xì)節(jié)(即怎么做)。第23頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍罘庋b舉例:電視機(jī)包括外形尺寸、分辨率、電壓、電流等屬性,具有打開(kāi)、關(guān)閉、調(diào)諧頻道、轉(zhuǎn)換頻道、設(shè)置圖象等服務(wù),封裝意味著將這些屬性和服務(wù)結(jié)合成一個(gè)不可分的整體,它對(duì)外有一個(gè)顯示屏、插頭和一些按鈕等接口,用戶通過(guò)這些接口使用電視機(jī),而不關(guān)心其內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)。第24頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍罘庋b 與封裝密切相關(guān)的概念是可見(jiàn)性,它是指對(duì)象的屬性和服務(wù)允許對(duì)象外部存取和引用的程度。在軟件上,封裝要求對(duì)象以外的部分不能隨意存取對(duì)象的內(nèi)部數(shù)據(jù)(屬性),從而有效地避免了外部錯(cuò)誤對(duì)它的交叉感染,使軟件錯(cuò)誤能夠局部化,大大

14、減少了查錯(cuò)和排錯(cuò)的難度。另外,當(dāng)對(duì)象內(nèi)部需要修改時(shí),由于它只通過(guò)少量的服務(wù)接口對(duì)外提供服務(wù),便大大減少了內(nèi)部修改對(duì)外部的影響,即減少了修改引起的波動(dòng)效應(yīng)。第25頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍罘庋b 封裝也有副作用,如果強(qiáng)調(diào)嚴(yán)格的封裝,則對(duì)象的任何屬性都不允許外部直接存取,因此就要增加許多沒(méi)有其他意義、只負(fù)責(zé)讀或?qū)懙姆?wù),從而為編程工作增加了負(fù)擔(dān),增加了運(yùn)行開(kāi)銷。為了避免這一點(diǎn),語(yǔ)言往往采取一種比較靈活的做法,即允許對(duì)象有不同程度的可見(jiàn)性。 第26頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍罾^承 繼承(Inheritance)是指子類可以自動(dòng)擁有父類的全部屬性和服務(wù)。繼承簡(jiǎn)化了人們對(duì)現(xiàn)實(shí)世界的認(rèn)識(shí)和

15、描述,在定義子類時(shí)不必重復(fù)定義那些已在父類中定義過(guò)的屬性和服務(wù),只要說(shuō)明它是某個(gè)父類的子類,并定義自己特有的屬性和服務(wù)即可。 第27頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍罾^承舉例:考慮輪船和客輪兩個(gè)類,輪船具有噸位、時(shí)速、吃水線等屬性和行駛、停泊等服務(wù),客輪具有輪船的全部屬性和服務(wù),又有自己的特殊屬性(如載客量)和服務(wù)(如供餐),因此客輪是輪船的子類,輪船是客輪的父類。與父類/子類等價(jià)的其他術(shù)語(yǔ)有一般類/特殊類、超類/子類、基類/派生類等。第28頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍罾^承一個(gè)類可以是多個(gè)父類的子類,它從多個(gè)父類中繼承了屬性與服務(wù),這稱為多繼承(Multiple Inheritanc

16、e)。舉例:客輪既是一種輪船,又是一種客運(yùn)工具,它可以繼承輪船和客運(yùn)工具這兩個(gè)類的屬性和服務(wù)。第29頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍罾^承繼承對(duì)于軟件復(fù)用是十分有益的,如果將OO方法開(kāi)發(fā)的類作為可復(fù)用構(gòu)件,那么在開(kāi)發(fā)新系統(tǒng)時(shí)可以直接復(fù)用這個(gè)類,還可以將其作為父類,通過(guò)繼承而實(shí)現(xiàn)復(fù)用,從而大大擴(kuò)展了復(fù)用的范圍。第30頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍钕?消息(Message)是對(duì)象發(fā)出的服務(wù)請(qǐng)求,一般包含提供服務(wù)的對(duì)象標(biāo)識(shí)、服務(wù)標(biāo)識(shí)、輸入信息和應(yīng)答信息等信息。通常,一個(gè)對(duì)象向另一個(gè)對(duì)象發(fā)出消息請(qǐng)求某項(xiàng)服務(wù),接收消息的對(duì)象響應(yīng)該消息,激發(fā)所要求的服務(wù)操作,并將操作結(jié)果返回給請(qǐng)求服務(wù)的對(duì)象。

17、第31頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍钕?舉例:使用電視機(jī)時(shí),用戶通過(guò)按鈕或遙控器發(fā)出轉(zhuǎn)換頻道的消息,電視機(jī)變換對(duì)電視臺(tái)的接收信號(hào)頻率,并將結(jié)果顯示給用戶。在這里,用戶發(fā)出的信息包括:接受者-電視機(jī);要求的服務(wù)-轉(zhuǎn)換頻道;輸入信息-轉(zhuǎn)換后的頻道序號(hào);應(yīng)答信息-轉(zhuǎn)換后頻道的節(jié)目。 第32頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍钕?面向?qū)ο蠹夹g(shù)的封裝機(jī)制使對(duì)象各自獨(dú)立,各司其職,消息通信則為它們提供了唯一合法的動(dòng)態(tài)聯(lián)系途徑,使它們的行為能夠相互配合,構(gòu)成一個(gè)有機(jī)的運(yùn)動(dòng)的系統(tǒng)。第33頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍钕?面向?qū)ο蠹夹g(shù)的封裝機(jī)制使對(duì)象各自獨(dú)立,各司其職,消息通信則為它們提供了唯

18、一合法的動(dòng)態(tài)聯(lián)系途徑,使它們的行為能夠相互配合,構(gòu)成一個(gè)有機(jī)的運(yùn)動(dòng)的系統(tǒng)。第34頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍罱Y(jié)構(gòu)與連接 任何事物之間都不是互相孤立,而是彼此聯(lián)系的,并因此構(gòu)成一個(gè)有機(jī)的整體。對(duì)象之間常見(jiàn)的聯(lián)系包括: 分類關(guān)系,即一般與特殊結(jié)構(gòu); 組成關(guān)系,即整體與部分結(jié)構(gòu); 對(duì)象屬性之間的靜態(tài)聯(lián)系,即實(shí)例連接; 對(duì)象行為之間的動(dòng)態(tài)聯(lián)系,即消息連接。 第35頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍罱Y(jié)構(gòu)與連接 (1) 一般與特殊結(jié)構(gòu) 第36頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍罱Y(jié)構(gòu)與連接 (1) 一般與特殊結(jié)構(gòu)又稱分類結(jié)構(gòu)(classification structure),它是由一組具有一般與

19、特殊關(guān)系(即繼承關(guān)系)的類所組成的結(jié)構(gòu)。其中,由一些單繼承關(guān)系的類形成的結(jié)構(gòu)稱為層次結(jié)構(gòu),由一些多繼承關(guān)系的類形成的結(jié)構(gòu)稱為網(wǎng)格結(jié)構(gòu),上圖顯示了一般與特殊的結(jié)構(gòu)。第37頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍罱Y(jié)構(gòu)與連接 (2) 整體與部分結(jié)構(gòu)又稱組裝結(jié)構(gòu)(composition structure),它描述對(duì)象之間的組成關(guān)系,即一個(gè)(或一些)對(duì)象是另一個(gè)對(duì)象的組成或部分。例如,大學(xué)中的系由辦公室、實(shí)驗(yàn)室、資料室等組成, 辦公室、實(shí)驗(yàn)室、資料室 對(duì)象類與 系 對(duì)象類之間是部分與整體的關(guān)系。 。第38頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍罱Y(jié)構(gòu)與連接 (3) 實(shí)例連接實(shí)例連接反映對(duì)象之間的靜態(tài)聯(lián)系,它是通

20、過(guò)對(duì)象的屬性來(lái)表現(xiàn)對(duì)象之間的依賴關(guān)系。在面向?qū)ο蟮男g(shù)語(yǔ)中,對(duì)象之間的實(shí)例連接被稱為鏈接(Link),而存在實(shí)例連接的對(duì)象類之間的聯(lián)系稱為關(guān)聯(lián)(Association)。例如,教師與學(xué)生是獨(dú)立的兩個(gè)類,它們之間存在教學(xué)聯(lián)系,這種聯(lián)系是通過(guò)類中的教學(xué)課程、時(shí)間、地點(diǎn)等屬性建立起來(lái)的。第39頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍罱Y(jié)構(gòu)與連接 (4) 消息連接消息連接描述了對(duì)象之間的動(dòng)態(tài)聯(lián)系,即如果一個(gè)對(duì)象在執(zhí)行自己的服務(wù)時(shí),需要通過(guò)消息請(qǐng)求另一個(gè)對(duì)象為它完成某個(gè)服務(wù),那么就說(shuō)第一個(gè)對(duì)象與第二個(gè)對(duì)象之間存在著消息連接。消息連接是有向的,從消息發(fā)送者指向消息接收者。 一般與特殊結(jié)構(gòu)、整體與部分結(jié)構(gòu)、實(shí)例連接

21、和消息連接都是面向?qū)ο蟮姆治龊驮O(shè)計(jì)階段必須考慮的重要概念,只有在分析和設(shè)計(jì)階段認(rèn)清問(wèn)題域中的這些結(jié)構(gòu)與連接關(guān)系,編程時(shí)才能準(zhǔn)確而有效地反映問(wèn)題域。 第40頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍疃鄳B(tài)性 多態(tài)性(Polymorphism)是指在父類中定義的屬性或服務(wù)被子類繼承后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。在體現(xiàn)一般與特殊關(guān)系的一個(gè)類層次結(jié)構(gòu)中,不同層次的類可以共享一個(gè)操作,但卻有各自不同的實(shí)現(xiàn)。當(dāng)一個(gè)對(duì)象接收到一個(gè)請(qǐng)求時(shí),它根據(jù)其所屬的類,動(dòng)態(tài)地選用在該類中定義的操作。 第41頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍疃鄳B(tài)性 舉例:在父類幾何圖形中定義了一個(gè)服務(wù)繪圖,但并不確定執(zhí)行時(shí)繪制一

22、個(gè)什么圖形。子類橢圓和多邊形都繼承了幾何圖形類的繪圖服務(wù),但其功能卻不相同:一個(gè)是畫(huà)橢圓,一個(gè)是畫(huà)多邊形。當(dāng)系統(tǒng)的其他部分請(qǐng)求繪制一個(gè)幾何圖形時(shí),消息中的服務(wù)都是繪圖,但橢圓和多邊形接收到該消息時(shí)卻各自執(zhí)行不同的繪圖算法。 第42頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍疃鄳B(tài)性 多態(tài)性機(jī)制不但為軟件的結(jié)構(gòu)設(shè)計(jì)提供了靈活性,減少了信息冗余,明顯提高了軟件的可復(fù)用性和可擴(kuò)充性。多態(tài)性的實(shí)現(xiàn)需要OOPL提供相應(yīng)的支持,與多態(tài)性實(shí)現(xiàn)有關(guān)的語(yǔ)言功能包括:重載(overload)、動(dòng)態(tài)綁定(dynamic binding)、類屬(generic)。 第43頁(yè),共53頁(yè)。3 面向?qū)ο蟮幕靖拍钪鲃?dòng)對(duì)象 主動(dòng)對(duì)象(

23、Active Object)是一組屬性和一組服務(wù)的封裝體,其中至少有一個(gè)服務(wù)不需要接收消息就能主動(dòng)執(zhí)行(稱為主動(dòng)服務(wù))。 主動(dòng)對(duì)象的作用是描述問(wèn)題域中具有主動(dòng)行為的事物以及在系統(tǒng)設(shè)計(jì)時(shí)識(shí)別的任務(wù),其主動(dòng)服務(wù)描述相應(yīng)任務(wù)所應(yīng)完成的操作。在系統(tǒng)實(shí)現(xiàn)階段,主動(dòng)服務(wù)應(yīng)該被實(shí)現(xiàn)為一個(gè)能并發(fā)執(zhí)行的、主動(dòng)的程序單位,如進(jìn)程或線程。 除了具有主動(dòng)服務(wù)外,主動(dòng)對(duì)象的其他方面與被動(dòng)對(duì)象沒(méi)有什么不同,主動(dòng)對(duì)象中也可以有一些在消息的驅(qū)動(dòng)下執(zhí)行的一般任務(wù)。 第44頁(yè),共53頁(yè)。4 面向?qū)ο蟮能浖こ谭椒?面向?qū)ο蟮能浖こ谭椒ㄊ敲嫦驅(qū)ο蠓椒ㄔ谲浖こ填I(lǐng)域的全面運(yùn)用,涉及到從面向?qū)ο蠓治觯∣OA)、面向?qū)ο笤O(shè)計(jì)(OOD)

24、 、面向?qū)ο缶幊蹋∣OP)、面向?qū)ο鬁y(cè)試(Object Oriented Testing,OOT)到面向?qū)ο筌浖S護(hù)(Object Oriented Software Maintenance,OOSM)的全過(guò)程。 第45頁(yè),共53頁(yè)。4 面向?qū)ο蟮能浖こ谭椒?面向?qū)ο蟮姆治雒嫦驅(qū)ο蟮姆治觯∣OA)就是運(yùn)用面向?qū)ο蟮姆椒ㄟM(jìn)行需求分析,其主要任務(wù)是分析和理解問(wèn)題域,找出描述問(wèn)題域和系統(tǒng)責(zé)任所需的類及對(duì)象,分析它們的內(nèi)部構(gòu)成和外部關(guān)系,建立OOA模型。 第46頁(yè),共53頁(yè)。4 面向?qū)ο蟮能浖こ谭椒?面向?qū)ο蟮脑O(shè)計(jì)面向?qū)ο蟮脑O(shè)計(jì)(OOD)就是根據(jù)已建立的分析模型,運(yùn)用面向?qū)ο蠹夹g(shù)進(jìn)行系統(tǒng)軟件設(shè)計(jì)。

25、它將OOA模型直接變成OOD模型,并且補(bǔ)充與一些實(shí)現(xiàn)有關(guān)的部分,如人機(jī)界面、數(shù)據(jù)存儲(chǔ)、任務(wù)管理等。OOA與OOD采用一致的表示法,使得從OOA到OOD不存在轉(zhuǎn)換,只有局部的修改或調(diào)整,并增加了與實(shí)現(xiàn)有關(guān)的獨(dú)立部分,因此,OOA與OOD之間不存在傳統(tǒng)方法中分析與設(shè)計(jì)之間的鴻溝,成為面向?qū)ο蠓椒ǖ闹饕獌?yōu)勢(shì)。第47頁(yè),共53頁(yè)。4 面向?qū)ο蟮能浖こ谭椒?面向?qū)ο蟮木幊堂嫦驅(qū)ο蟮木幊蹋∣OP)就是用一種面向?qū)ο蟮木幊陶Z(yǔ)言將OOD模型中的各個(gè)成分編寫(xiě)成程序,從OOAOODOOP的無(wú)縫連接和平滑過(guò)渡,提高了開(kāi)發(fā)工作的效率和質(zhì)量。第48頁(yè),共53頁(yè)。4 面向?qū)ο蟮能浖こ谭椒?面向?qū)ο蟮臏y(cè)試面向?qū)ο蟮臏y(cè)試(OOT)是指對(duì)于運(yùn)用OO技術(shù)開(kāi)發(fā)的軟件,在測(cè)試過(guò)程中繼續(xù)運(yùn)用OO技術(shù)進(jìn)行以對(duì)象概念

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論