面向?qū)ο蠼榻B_第1頁(yè)
面向?qū)ο蠼榻B_第2頁(yè)
面向?qū)ο蠼榻B_第3頁(yè)
面向?qū)ο蠼榻B_第4頁(yè)
面向?qū)ο蠼榻B_第5頁(yè)
已閱讀5頁(yè),還剩33頁(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)介

7.1面向?qū)ο蟮臍v史與發(fā)展第七章面向?qū)ο蠼榻B7.2面向?qū)ο笈c面向過(guò)程7.3面向?qū)ο蟮闹饕拍?.4面向?qū)ο蟮幕咎卣?.5面向?qū)ο筌浖こ谭椒?教學(xué)目的與要求⒈了解面向?qū)ο蟀l(fā)展的幾個(gè)階段;⒉了解面向?qū)ο蠛兔嫦蜻^(guò)程的區(qū)別;⒊掌握面向?qū)ο蟮幕靖拍?⒋了解面向?qū)ο蟮幕咎卣?;⒌了解有關(guān)面向?qū)ο筌浖こ谭椒ā?/p>

2教學(xué)重點(diǎn)

⒈面向?qū)ο蟮幕靖拍?

⒉面向?qū)ο蟮闹饕卣?。教學(xué)難點(diǎn)

⒈面向?qū)ο蟮幕靖拍?/p>

37.1面向?qū)ο髿v史及發(fā)展初始階段發(fā)展階段成熟階段4

初始階段:60年代末挪威奧斯陸大學(xué)和挪威計(jì)算中心共同研制的Simula語(yǔ)言是面向?qū)ο笳Z(yǔ)言發(fā)展歷史上的第一個(gè)里程碑,它首先引入了類的概念和繼承機(jī)制,后來(lái)的一些著名面向?qū)ο缶幊陶Z(yǔ)言(如Smalltalk、C++、Eiffel)都受到Simula的啟發(fā)。

KRISTENNYGAARD(Simula創(chuàng)始人)80年代,Xerox研究中心推出了Smalltalk語(yǔ)言和環(huán)境,它具備了面向?qū)ο笳Z(yǔ)言的繼承和封裝的主要特征,使面向?qū)ο蟪绦蛟O(shè)計(jì)方法趨于完善,掀起了面向?qū)ο笱芯康母叱薄?發(fā)展階段

從80年代中期到90年代,面向?qū)ο笳Z(yǔ)言十分熱門,大批比較實(shí)用的面向?qū)ο缶幊陶Z(yǔ)言(ObjectOrientedProgrammingLanguage,OOPL)涌現(xiàn)出來(lái),如C++、Objective-C、ObjectPascal、CLOS(CommonLispObjectSystem)、Eiffel、Actor等,特別是C++語(yǔ)言已成為目前應(yīng)用最廣泛的OOPL。

BjarneStroustrup(C++創(chuàng)始人)

90年代中期,出現(xiàn)了JAVA語(yǔ)言。

JAMESGOSLING面向?qū)ο缶幊陶Z(yǔ)言的繁榮是面向?qū)ο蠓椒ㄗ呦驅(qū)嵱玫闹匾獦?biāo)志,也是面向?qū)ο蠓椒ㄔ谟?jì)算機(jī)學(xué)術(shù)界、產(chǎn)業(yè)界和教育界日益受到重視的推動(dòng)力。6成熟階段

在C++語(yǔ)言十分熱門的時(shí)候,人們開(kāi)始了對(duì)面向?qū)ο蠓治觯∣bjectOrientedAnlysis,OOA)的研究,進(jìn)而延伸到面向?qū)ο笤O(shè)計(jì)(ObjectOrientedDesign,OOD)。特別是90年代以后,許多專家都在嘗試用不同的方法進(jìn)行面向?qū)ο蟮姆治雠c設(shè)計(jì),其中比較著名的有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ù)一整套的軟件工程體系。77.2面向?qū)ο笈c面向過(guò)程面向?qū)ο蠹夹g(shù)是一種以對(duì)象為基礎(chǔ)、以事件或消息來(lái)驅(qū)動(dòng)對(duì)象執(zhí)行處理的程序設(shè)計(jì)技術(shù)。它是一種自下而上的程序設(shè)計(jì)方法,“面向過(guò)程”是一種以事件為中心的編程思想。如傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì)方法。8面向?qū)ο?對(duì)象(object)+類(classification)+繼承(inheritance)+通信(communicationwithmessages)

可以說(shuō),采用這四個(gè)概念開(kāi)發(fā)的軟件系統(tǒng)是面向?qū)ο蟮摹?.3面向?qū)ο蟮幕靖拍?/p>

面向?qū)ο蟮姆椒ㄊ且环N運(yùn)用對(duì)象、類、繼承、封裝、聚合、消息傳送、多態(tài)性等概念來(lái)構(gòu)造系統(tǒng)的軟件開(kāi)發(fā)方法。9

面向?qū)ο蠓椒ǔ蔀橹髁鏖_(kāi)發(fā)方法。可以從下列幾個(gè)方面來(lái)分析其原因:從認(rèn)知學(xué)的角度來(lái)看,面向?qū)ο蠓椒ǚ先藗儗?duì)客觀世界的認(rèn)識(shí)規(guī)律。面向?qū)ο蠓椒ㄩ_(kāi)發(fā)的軟件系統(tǒng)易于維護(hù),其體系結(jié)構(gòu)易于理解、擴(kuò)充和修改。面向?qū)ο蠓椒ㄖ械睦^承機(jī)制有力支持軟件的復(fù)用。10面向?qū)ο蟮幕靖拍?.對(duì)象(object)

對(duì)象是系統(tǒng)中用來(lái)描述客觀事物的一個(gè)實(shí)體,它是構(gòu)成系統(tǒng)的一個(gè)基本單位。一個(gè)對(duì)象由一組屬性和對(duì)這組屬性進(jìn)行操作的一組服務(wù)構(gòu)成。對(duì)象是屬性和服務(wù)的結(jié)合體,二者是不可分的。

屬性(attribute)通常是一些數(shù)據(jù),有時(shí)它也可以是另一個(gè)對(duì)象。每個(gè)對(duì)象都有它自己的屬性值,表示該對(duì)象的狀態(tài)。對(duì)象中的屬性只能通過(guò)該對(duì)象所提供的操作來(lái)存取或修改。

操作(operation)(也稱方法或服務(wù))規(guī)定了對(duì)象的行為,表示對(duì)象所能提供的服務(wù)。112.類(class)類是具有相同屬性和服務(wù)的一組對(duì)象的集合。一個(gè)類中的每個(gè)對(duì)象都是這個(gè)類的一個(gè)實(shí)例(instance)。類是創(chuàng)建對(duì)象的模板,從同一個(gè)類實(shí)例化的每個(gè)對(duì)象都具有相同的結(jié)構(gòu)和行為。12幾何對(duì)象顏色位置移動(dòng)(delta:矢量)選擇(P:指針型):布爾型旋轉(zhuǎn)(角度)圖對(duì)象類的描述人姓名:字符串年齡:整型改換工作改換地址文件文件名文件大小最近更新日期打印張紅兵張紅兵28繪圖員人民路8號(hào)李軍:人李軍24程序員無(wú)圖對(duì)象的描述對(duì)象和類的描述

對(duì)象和類一般采用“對(duì)象圖”和“類圖”來(lái)描述。類名屬性運(yùn)算

對(duì)象圖

類圖13轎車型號(hào):字符串顏色:字符串牌照號(hào):字符串....張經(jīng)理的轎車型號(hào)=桑塔納顏色=紅色牌照號(hào)=滬AN2037....類實(shí)例對(duì)象14封裝(encapsulation)是一種信息隱蔽技術(shù),用戶只能看見(jiàn)對(duì)象封裝界面上的信息,對(duì)象的內(nèi)部實(shí)現(xiàn)對(duì)用戶是隱蔽的。封裝的目的是使對(duì)象的使用者和生產(chǎn)者分離,使對(duì)象的定義和實(shí)現(xiàn)分開(kāi)。

一個(gè)對(duì)象通??捎蓪?duì)象名、屬性和操作三部分組成。153.繼承(inheritance)

繼承是類間的基本關(guān)系,它是基于層次關(guān)系的不同類共享數(shù)據(jù)和操作的一種機(jī)制。父類中定義了其所有子類的公共屬性和操作,在子類中除了定義自己特有的屬性和操作外,可以繼承其父類(或祖先類)的屬性和操作,還可以對(duì)父類(或祖先類)中的操作重新定義其實(shí)現(xiàn)方法。意義:實(shí)現(xiàn)代碼的重用。16矩形長(zhǎng)寬對(duì)角線計(jì)算面積計(jì)算對(duì)角線多邊形頂點(diǎn)數(shù)頂點(diǎn)坐標(biāo)計(jì)算面積旋轉(zhuǎn)17抽象類(abstractclass):沒(méi)有實(shí)例的類,它把一些類組織起來(lái),提供一些公共的行為,但并不需要使用這個(gè)類的實(shí)例,而僅使用其子類的實(shí)例。在抽象類中可以定義抽象操作,抽象操作指:只定義這個(gè)類的操作接口,不定義它的實(shí)現(xiàn),其實(shí)現(xiàn)部分由其子類定義。抽象操作操作名用斜體字表示,也可以在操作特征(signature)后面加上特征字符串{abstract}。18AbstractclassAbstractoperationShape{abstract}draw(){abstract}Circle

draw()Rectangle

draw()抽象類與子類示例19交通工具飛行器汽車船轎車貨車

一般-特殊關(guān)系20如果一個(gè)子類只有唯一一個(gè)父類,這個(gè)繼承稱為單一繼承。如果一個(gè)子類有一個(gè)以上的父類,這種繼承稱為多重繼承。水上交通工具陸上交通工具水陸兩棲交通工具多重繼承21

4.消息(message)

在面向?qū)ο蠓椒ㄖ袑?duì)消息的定義是:消息就是向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求,它應(yīng)該含有下述信息:提供服務(wù)的對(duì)象標(biāo)識(shí)、服務(wù)標(biāo)識(shí)、輸入信息和回答信息。22

5.結(jié)構(gòu)與連接(message)對(duì)象之間存在的關(guān)系主要有以下幾種:(1)分類關(guān)系,用一般-特殊結(jié)構(gòu)表示。(2)組成關(guān)系,用整體-部分結(jié)構(gòu)表示。(3)對(duì)象之間的靜態(tài)聯(lián)系,用實(shí)例連接表示。(4)對(duì)象之間的動(dòng)態(tài)聯(lián)系,用消息連接表示。23

5.結(jié)構(gòu)與連接:一般-特殊結(jié)構(gòu)一般-特殊結(jié)構(gòu)是由一組具有一般-特殊關(guān)系(繼承關(guān)系)的類所組成的結(jié)構(gòu)。它是一個(gè)以類為結(jié)點(diǎn),以繼承關(guān)系為邊的連通有向圖。如下圖所示(a)是一般-特殊結(jié)構(gòu)連接符,從圓弧引出的連線連接到一般類,從直線分出的連線連接到每個(gè)特殊類。圖(b)是一個(gè)完整的一般-特殊結(jié)構(gòu),它包括結(jié)構(gòu)中的每個(gè)類。

2425

5.結(jié)構(gòu)與連接:整體-部分結(jié)構(gòu)整體—部分結(jié)構(gòu)又稱為組裝結(jié)構(gòu),它描述對(duì)象之間的組成關(guān)系,即:一個(gè)(或一些)對(duì)象是另一個(gè)對(duì)象的組成部分。整體-部分結(jié)構(gòu)有兩種實(shí)現(xiàn)方式:緊密的組成方式和松散的組成方式。組裝結(jié)構(gòu)具有的最重要的性質(zhì)是傳遞性。也就是說(shuō),如果A是B的一部分,B是C的一部分,則A也是C的一部分。下圖是表示組裝結(jié)構(gòu)的圖形符號(hào)。

2627

5.結(jié)構(gòu)與連接:實(shí)例連接實(shí)例連接反映對(duì)象與對(duì)象之間的靜態(tài)聯(lián)系。兩類對(duì)象之間不帶屬性的實(shí)例連接,其表示法如下圖(a)所示。圖(b)概括了因兩端的多重性不同而形成的三種情況:一對(duì)一的連接、一對(duì)多的連接和多對(duì)多的連接。

2829

5.結(jié)構(gòu)與連接:消息連接消息連接描述對(duì)象之間的動(dòng)態(tài)聯(lián)系,即:若一個(gè)對(duì)象在執(zhí)行自己的服務(wù)時(shí),需要(通過(guò)消息)請(qǐng)求另一個(gè)對(duì)象為它完成某個(gè)服務(wù),則就第一個(gè)對(duì)象與第二個(gè)對(duì)象之間存在著消息連接。

30

6.多態(tài)性與動(dòng)態(tài)綁定對(duì)象的多態(tài)性(polymorphism)是指一般類中定義的屬性或服務(wù)被特殊類繼承后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。例如“畫(huà)”服務(wù),作用在“矩形”對(duì)象上,則在屏幕上畫(huà)一個(gè)矩形,作用在“圓”對(duì)象上,則在屏幕上畫(huà)一個(gè)圓。動(dòng)態(tài)綁定(dynamicbinding)是在運(yùn)行時(shí)根據(jù)對(duì)象接收的消息動(dòng)態(tài)地確定要連接的服務(wù)代碼。31在一般與特殊關(guān)系中,子類是父類的一個(gè)特例,所以父類對(duì)象可以出現(xiàn)的地方,也允許其子類對(duì)象出現(xiàn)。因此在運(yùn)行過(guò)程中,當(dāng)一個(gè)對(duì)象發(fā)送消息請(qǐng)求服務(wù)時(shí),要根據(jù)接收對(duì)象的具體情況將請(qǐng)求的服務(wù)與實(shí)現(xiàn)的方法進(jìn)行連接,即動(dòng)態(tài)綁定。32if條件thenp:=t;elsep:=r;area:=p.getarea;getArea{abstract}polygonareahexagongetArearectanglegetArealengthwidthtrianglegetAreaVarp:polygon;Vart:triangle:=triangle.new;Varr:rectangle:=rectangle.new;337、永久對(duì)象(Persistentobject)

所謂永久對(duì)象是指生存期可以超越程序的執(zhí)行時(shí)間而長(zhǎng)期存在的對(duì)象。目前,大多數(shù)OOPL不支持永久對(duì)象,如果一個(gè)對(duì)象要長(zhǎng)期保存,必須依靠于文件系統(tǒng)或數(shù)據(jù)庫(kù)管理系統(tǒng)實(shí)現(xiàn),程序員需要作對(duì)象與文件系統(tǒng)或數(shù)據(jù)庫(kù)之間數(shù)據(jù)格式的轉(zhuǎn)換,以及保存和恢復(fù)所需

溫馨提示

  • 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)論