面向對象介紹_第1頁
面向對象介紹_第2頁
面向對象介紹_第3頁
面向對象介紹_第4頁
面向對象介紹_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

7.1面向對象的歷史與發(fā)展第七章面向對象介紹7.2面向對象與面向過程7.3面向對象的主要概念7.4面向對象的基本特征7.5面向對象軟件工程方法1教學目的與要求⒈了解面向對象發(fā)展的幾個階段;⒉了解面向對象和面向過程的區(qū)別;⒊掌握面向對象的基本概念;⒋了解面向對象的基本特征;⒌了解有關面向對象軟件工程方法。

2教學重點

⒈面向對象的基本概念;

⒉面向對象的主要特征。教學難點

⒈面向對象的基本概念

37.1面向對象歷史及發(fā)展初始階段發(fā)展階段成熟階段4

初始階段:60年代末挪威奧斯陸大學和挪威計算中心共同研制的Simula語言是面向對象語言發(fā)展歷史上的第一個里程碑,它首先引入了類的概念和繼承機制,后來的一些著名面向對象編程語言(如Smalltalk、C++、Eiffel)都受到Simula的啟發(fā)。

KRISTENNYGAARD(Simula創(chuàng)始人)80年代,Xerox研究中心推出了Smalltalk語言和環(huán)境,它具備了面向對象語言的繼承和封裝的主要特征,使面向對象程序設計方法趨于完善,掀起了面向對象研究的高潮。5發(fā)展階段

從80年代中期到90年代,面向對象語言十分熱門,大批比較實用的面向對象編程語言(ObjectOrientedProgrammingLanguage,OOPL)涌現(xiàn)出來,如C++、Objective-C、ObjectPascal、CLOS(CommonLispObjectSystem)、Eiffel、Actor等,特別是C++語言已成為目前應用最廣泛的OOPL。

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

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

JAMESGOSLING面向對象編程語言的繁榮是面向對象方法走向實用的重要標志,也是面向對象方法在計算機學術界、產(chǎn)業(yè)界和教育界日益受到重視的推動力。6成熟階段

在C++語言十分熱門的時候,人們開始了對面向對象分析(ObjectOrientedAnlysis,OOA)的研究,進而延伸到面向對象設計(ObjectOrientedDesign,OOD)。特別是90年代以后,許多專家都在嘗試用不同的方法進行面向對象的分析與設計,其中比較著名的有Booch的方法、Rumbaugh的OMT方法、Coad/Yourdon的方法、Wirtf-Brock的RDD方法、Shlear-Mellor的方法、Gibon的OBA方法、Jacobson的OOSE方法、Martin-Odell的方法、Fusion方法等,這些方法各有所長,力圖解決復雜軟件系統(tǒng)的開發(fā)問題。在這段時期,面向對象的分析和設計技術逐漸走向實用,最終形成了從分析、設計到編程、測試與維護一整套的軟件工程體系。77.2面向對象與面向過程面向對象技術是一種以對象為基礎、以事件或消息來驅動對象執(zhí)行處理的程序設計技術。它是一種自下而上的程序設計方法,“面向過程”是一種以事件為中心的編程思想。如傳統(tǒng)的結構化程序設計方法。8面向對象=對象(object)+類(classification)+繼承(inheritance)+通信(communicationwithmessages)

可以說,采用這四個概念開發(fā)的軟件系統(tǒng)是面向對象的。7.3面向對象的基本概念

面向對象的方法是一種運用對象、類、繼承、封裝、聚合、消息傳送、多態(tài)性等概念來構造系統(tǒng)的軟件開發(fā)方法。9

面向對象方法成為主流開發(fā)方法??梢詮南铝袔讉€方面來分析其原因:從認知學的角度來看,面向對象方法符合人們對客觀世界的認識規(guī)律。面向對象方法開發(fā)的軟件系統(tǒng)易于維護,其體系結構易于理解、擴充和修改。面向對象方法中的繼承機制有力支持軟件的復用。10面向對象的基本概念1.對象(object)

對象是系統(tǒng)中用來描述客觀事物的一個實體,它是構成系統(tǒng)的一個基本單位。一個對象由一組屬性和對這組屬性進行操作的一組服務構成。對象是屬性和服務的結合體,二者是不可分的。

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

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

對象和類一般采用“對象圖”和“類圖”來描述。類名屬性運算

對象圖

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

一個對象通??捎蓪ο竺?、屬性和操作三部分組成。153.繼承(inheritance)

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

draw()Rectangle

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

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

4.消息(message)

在面向對象方法中對消息的定義是:消息就是向對象發(fā)出的服務請求,它應該含有下述信息:提供服務的對象標識、服務標識、輸入信息和回答信息。22

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

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

2425

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

2627

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

2829

5.結構與連接:消息連接消息連接描述對象之間的動態(tài)聯(lián)系,即:若一個對象在執(zhí)行自己的服務時,需要(通過消息)請求另一個對象為它完成某個服務,則就第一個對象與第二個對象之間存在著消息連接。

30

6.多態(tài)性與動態(tài)綁定對象的多態(tài)性(polymorphism)是指一般類中定義的屬性或服務被特殊類繼承后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。例如“畫”服務,作用在“矩形”對象上,則在屏幕上畫一個矩形,作用在“圓”對象上,則在屏幕上畫一個圓。動態(tài)綁定(dynamicbinding)是在運行時根據(jù)對象接收的消息動態(tài)地確定要連接的服務代碼。31在一般與特殊關系中,子類是父類的一個特例,所以父類對象可以出現(xiàn)的地方,也允許其子類對象出現(xiàn)。因此在運行過程中,當一個對象發(fā)送消息請求服務時,要根據(jù)接收對象的具體情況將請求的服務與實現(xià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ù)格式的轉換,以及保存和恢復所需

溫馨提示

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

評論

0/150

提交評論