




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
7.1面向?qū)ο蟮臍v史與發(fā)展第七章面向?qū)ο蠼榻B7.2面向?qū)ο笈c面向過程7.3面向?qū)ο蟮闹饕拍?.4面向?qū)ο蟮幕咎卣?.5面向?qū)ο筌浖こ谭椒?教學(xué)目的與要求⒈了解面向?qū)ο蟀l(fā)展的幾個階段;⒉了解面向?qū)ο蠛兔嫦蜻^程的區(qū)別;⒊掌握面向?qū)ο蟮幕靖拍?⒋了解面向?qū)ο蟮幕咎卣?;⒌了解有關(guān)面向?qū)ο筌浖こ谭椒ā?/p>
2教學(xué)重點
⒈面向?qū)ο蟮幕靖拍?
⒉面向?qū)ο蟮闹饕卣鳌=虒W(xué)難點
⒈面向?qū)ο蟮幕靖拍?/p>
37.1面向?qū)ο髿v史及發(fā)展初始階段發(fā)展階段成熟階段4
初始階段:60年代末挪威奧斯陸大學(xué)和挪威計算中心共同研制的Simula語言是面向?qū)ο笳Z言發(fā)展歷史上的第一個里程碑,它首先引入了類的概念和繼承機(jī)制,后來的一些著名面向?qū)ο缶幊陶Z言(如Smalltalk、C++、Eiffel)都受到Simula的啟發(fā)。
KRISTENNYGAARD(Simula創(chuàng)始人)80年代,Xerox研究中心推出了Smalltalk語言和環(huán)境,它具備了面向?qū)ο笳Z言的繼承和封裝的主要特征,使面向?qū)ο蟪绦蛟O(shè)計方法趨于完善,掀起了面向?qū)ο笱芯康母叱薄?發(fā)展階段
從80年代中期到90年代,面向?qū)ο笳Z言十分熱門,大批比較實用的面向?qū)ο缶幊陶Z言(ObjectOrientedProgrammingLanguage,OOPL)涌現(xiàn)出來,如C++、Objective-C、ObjectPascal、CLOS(CommonLispObjectSystem)、Eiffel、Actor等,特別是C++語言已成為目前應(yīng)用最廣泛的OOPL。
BjarneStroustrup(C++創(chuàng)始人)
90年代中期,出現(xiàn)了JAVA語言。
JAMESGOSLING面向?qū)ο缶幊陶Z言的繁榮是面向?qū)ο蠓椒ㄗ呦驅(qū)嵱玫闹匾獦?biāo)志,也是面向?qū)ο蠓椒ㄔ谟嬎銠C(jī)學(xué)術(shù)界、產(chǎn)業(yè)界和教育界日益受到重視的推動力。6成熟階段
在C++語言十分熱門的時候,人們開始了對面向?qū)ο蠓治觯∣bjectOrientedAnlysis,OOA)的研究,進(jìn)而延伸到面向?qū)ο笤O(shè)計(ObjectOrientedDesign,OOD)。特別是90年代以后,許多專家都在嘗試用不同的方法進(jìn)行面向?qū)ο蟮姆治雠c設(shè)計,其中比較著名的有Booch的方法、Rumbaugh的OMT方法、Coad/Yourdon的方法、Wirtf-Brock的RDD方法、Shlear-Mellor的方法、Gibon的OBA方法、Jacobson的OOSE方法、Martin-Odell的方法、Fusion方法等,這些方法各有所長,力圖解決復(fù)雜軟件系統(tǒng)的開發(fā)問題。在這段時期,面向?qū)ο蟮姆治龊驮O(shè)計技術(shù)逐漸走向?qū)嵱?,最終形成了從分析、設(shè)計到編程、測試與維護(hù)一整套的軟件工程體系。77.2面向?qū)ο笈c面向過程面向?qū)ο蠹夹g(shù)是一種以對象為基礎(chǔ)、以事件或消息來驅(qū)動對象執(zhí)行處理的程序設(shè)計技術(shù)。它是一種自下而上的程序設(shè)計方法,“面向過程”是一種以事件為中心的編程思想。如傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計方法。8面向?qū)ο?對象(object)+類(classification)+繼承(inheritance)+通信(communicationwithmessages)
可以說,采用這四個概念開發(fā)的軟件系統(tǒng)是面向?qū)ο蟮摹?.3面向?qū)ο蟮幕靖拍?/p>
面向?qū)ο蟮姆椒ㄊ且环N運用對象、類、繼承、封裝、聚合、消息傳送、多態(tài)性等概念來構(gòu)造系統(tǒng)的軟件開發(fā)方法。9
面向?qū)ο蠓椒ǔ蔀橹髁鏖_發(fā)方法??梢詮南铝袔讉€方面來分析其原因:從認(rèn)知學(xué)的角度來看,面向?qū)ο蠓椒ǚ先藗儗陀^世界的認(rèn)識規(guī)律。面向?qū)ο蠓椒ㄩ_發(fā)的軟件系統(tǒng)易于維護(hù),其體系結(jié)構(gòu)易于理解、擴(kuò)充和修改。面向?qū)ο蠓椒ㄖ械睦^承機(jī)制有力支持軟件的復(fù)用。10面向?qū)ο蟮幕靖拍?.對象(object)
對象是系統(tǒng)中用來描述客觀事物的一個實體,它是構(gòu)成系統(tǒng)的一個基本單位。一個對象由一組屬性和對這組屬性進(jìn)行操作的一組服務(wù)構(gòu)成。對象是屬性和服務(wù)的結(jié)合體,二者是不可分的。
屬性(attribute)通常是一些數(shù)據(jù),有時它也可以是另一個對象。每個對象都有它自己的屬性值,表示該對象的狀態(tài)。對象中的屬性只能通過該對象所提供的操作來存取或修改。
操作(operation)(也稱方法或服務(wù))規(guī)定了對象的行為,表示對象所能提供的服務(wù)。112.類(class)類是具有相同屬性和服務(wù)的一組對象的集合。一個類中的每個對象都是這個類的一個實例(instance)。類是創(chuàng)建對象的模板,從同一個類實例化的每個對象都具有相同的結(jié)構(gòu)和行為。12幾何對象顏色位置移動(delta:矢量)選擇(P:指針型):布爾型旋轉(zhuǎn)(角度)圖對象類的描述人姓名:字符串年齡:整型改換工作改換地址文件文件名文件大小最近更新日期打印張紅兵張紅兵28繪圖員人民路8號李軍:人李軍24程序員無圖對象的描述對象和類的描述
對象和類一般采用“對象圖”和“類圖”來描述。類名屬性運算
對象圖
類圖13轎車型號:字符串顏色:字符串牌照號:字符串....張經(jīng)理的轎車型號=桑塔納顏色=紅色牌照號=滬AN2037....類實例對象14封裝(encapsulation)是一種信息隱蔽技術(shù),用戶只能看見對象封裝界面上的信息,對象的內(nèi)部實現(xiàn)對用戶是隱蔽的。封裝的目的是使對象的使用者和生產(chǎn)者分離,使對象的定義和實現(xiàn)分開。
一個對象通常可由對象名、屬性和操作三部分組成。153.繼承(inheritance)
繼承是類間的基本關(guān)系,它是基于層次關(guān)系的不同類共享數(shù)據(jù)和操作的一種機(jī)制。父類中定義了其所有子類的公共屬性和操作,在子類中除了定義自己特有的屬性和操作外,可以繼承其父類(或祖先類)的屬性和操作,還可以對父類(或祖先類)中的操作重新定義其實現(xiàn)方法。意義:實現(xiàn)代碼的重用。16矩形長寬對角線計算面積計算對角線多邊形頂點數(shù)頂點坐標(biāo)計算面積旋轉(zhuǎn)17抽象類(abstractclass):沒有實例的類,它把一些類組織起來,提供一些公共的行為,但并不需要使用這個類的實例,而僅使用其子類的實例。在抽象類中可以定義抽象操作,抽象操作指:只定義這個類的操作接口,不定義它的實現(xiàn),其實現(xiàn)部分由其子類定義。抽象操作操作名用斜體字表示,也可以在操作特征(signature)后面加上特征字符串{abstract}。18AbstractclassAbstractoperationShape{abstract}draw(){abstract}Circle
draw()Rectangle
draw()抽象類與子類示例19交通工具飛行器汽車船轎車貨車
一般-特殊關(guān)系20如果一個子類只有唯一一個父類,這個繼承稱為單一繼承。如果一個子類有一個以上的父類,這種繼承稱為多重繼承。水上交通工具陸上交通工具水陸兩棲交通工具多重繼承21
4.消息(message)
在面向?qū)ο蠓椒ㄖ袑ο⒌亩x是:消息就是向?qū)ο蟀l(fā)出的服務(wù)請求,它應(yīng)該含有下述信息:提供服務(wù)的對象標(biāo)識、服務(wù)標(biāo)識、輸入信息和回答信息。22
5.結(jié)構(gòu)與連接(message)對象之間存在的關(guān)系主要有以下幾種:(1)分類關(guān)系,用一般-特殊結(jié)構(gòu)表示。(2)組成關(guān)系,用整體-部分結(jié)構(gòu)表示。(3)對象之間的靜態(tài)聯(lián)系,用實例連接表示。(4)對象之間的動態(tài)聯(lián)系,用消息連接表示。23
5.結(jié)構(gòu)與連接:一般-特殊結(jié)構(gòu)一般-特殊結(jié)構(gòu)是由一組具有一般-特殊關(guān)系(繼承關(guān)系)的類所組成的結(jié)構(gòu)。它是一個以類為結(jié)點,以繼承關(guān)系為邊的連通有向圖。如下圖所示(a)是一般-特殊結(jié)構(gòu)連接符,從圓弧引出的連線連接到一般類,從直線分出的連線連接到每個特殊類。圖(b)是一個完整的一般-特殊結(jié)構(gòu),它包括結(jié)構(gòu)中的每個類。
2425
5.結(jié)構(gòu)與連接:整體-部分結(jié)構(gòu)整體—部分結(jié)構(gòu)又稱為組裝結(jié)構(gòu),它描述對象之間的組成關(guān)系,即:一個(或一些)對象是另一個對象的組成部分。整體-部分結(jié)構(gòu)有兩種實現(xiàn)方式:緊密的組成方式和松散的組成方式。組裝結(jié)構(gòu)具有的最重要的性質(zhì)是傳遞性。也就是說,如果A是B的一部分,B是C的一部分,則A也是C的一部分。下圖是表示組裝結(jié)構(gòu)的圖形符號。
2627
5.結(jié)構(gòu)與連接:實例連接實例連接反映對象與對象之間的靜態(tài)聯(lián)系。兩類對象之間不帶屬性的實例連接,其表示法如下圖(a)所示。圖(b)概括了因兩端的多重性不同而形成的三種情況:一對一的連接、一對多的連接和多對多的連接。
2829
5.結(jié)構(gòu)與連接:消息連接消息連接描述對象之間的動態(tài)聯(lián)系,即:若一個對象在執(zhí)行自己的服務(wù)時,需要(通過消息)請求另一個對象為它完成某個服務(wù),則就第一個對象與第二個對象之間存在著消息連接。
30
6.多態(tài)性與動態(tài)綁定對象的多態(tài)性(polymorphism)是指一般類中定義的屬性或服務(wù)被特殊類繼承后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。例如“畫”服務(wù),作用在“矩形”對象上,則在屏幕上畫一個矩形,作用在“圓”對象上,則在屏幕上畫一個圓。動態(tài)綁定(dynamicbinding)是在運行時根據(jù)對象接收的消息動態(tài)地確定要連接的服務(wù)代碼。31在一般與特殊關(guān)系中,子類是父類的一個特例,所以父類對象可以出現(xiàn)的地方,也允許其子類對象出現(xiàn)。因此在運行過程中,當(dāng)一個對象發(fā)送消息請求服務(wù)時,要根據(jù)接收對象的具體情況將請求的服務(wù)與實現(xiàn)的方法進(jìn)行連接,即動態(tài)綁定。32if條件thenp:=t;elsep:=r;area:=p.getarea;getArea{abstract}polygonareahexagongetArearectanglegetArealengthwidthtrianglegetAreaVarp:polygon;Vart:triangle:=triangle.new;Varr:rectangle:=rectangle.new;337、永久對象(Persistentobject)
所謂永久對象是指生存期可以超越程序的執(zhí)行時間而長期存在的對象。目前,大多數(shù)OOPL不支持永久對象,如果一個對象要長期保存,必須依靠于文件系統(tǒng)或數(shù)據(jù)庫管理系統(tǒng)實現(xiàn),程序員需要作對象與文件系統(tǒng)或數(shù)據(jù)庫之間數(shù)據(jù)格式的轉(zhuǎn)換,以及保存和恢復(fù)所需
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣西河池市本年度(2025)小學(xué)一年級數(shù)學(xué)部編版摸底考試((上下)學(xué)期)試卷及答案
- 天津市南開中學(xué)2024-2025學(xué)年高三下學(xué)期第五次月考英語試題(原卷版+解析版)
- 航空旅游智能客服系統(tǒng)考核試卷
- 煤炭洗選廠信息化建設(shè)與數(shù)據(jù)管理考核試卷
- 硝酸鉀生產(chǎn)過程中的能量優(yōu)化與節(jié)約考核試卷
- 胃腸道功能紊亂的防治考核試卷
- 數(shù)據(jù)分析師的核心技能考核試卷
- 社會責(zé)任履行考核試卷
- 油氣倉儲與能源市場供需預(yù)測及分析報告考核試卷
- 天津市寧河縣蘆臺五中重點名校2025屆初三下學(xué)期第一次教學(xué)質(zhì)量檢查考試數(shù)學(xué)試題含解析
- 酒店能源管理操作手冊
- WT1806E功率分析儀操作規(guī)程
- 充電樁運營管理協(xié)議
- 電動汽車充電網(wǎng)絡(luò)規(guī)劃與優(yōu)化
- 設(shè)備吊裝作業(yè)施工方案
- 丹霞山自然風(fēng)景區(qū)旅游資源規(guī)劃
- 交回原證承諾書
- 2024年初級保育師技能鑒定考試題庫(含答案)
- 膿毒血癥課件
- 公共空間設(shè)計(高職環(huán)境藝術(shù)設(shè)計和室內(nèi)設(shè)計專業(yè))全套教學(xué)課件
- 2024年北京亦莊國際投資發(fā)展有限公司招聘筆試沖刺題(帶答案解析)
評論
0/150
提交評論