1--面向?qū)ο蟾攀?ppt_第1頁
1--面向?qū)ο蟾攀?ppt_第2頁
1--面向?qū)ο蟾攀?ppt_第3頁
1--面向?qū)ο蟾攀?ppt_第4頁
1--面向?qū)ο蟾攀?ppt_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、蘭州理工大學計算機與通信學院 年福忠,第1章 面向?qū)ο蟪绦蛟O(shè)計概述,第2章 C+概述,第3章 類與對象,第4章 派生類與繼承,第5章 多態(tài)性,第6章 模板,第7章 C+的I/O流類庫,C+面向?qū)ο蟪绦蛟O(shè)計,程序的目的:用于數(shù)學計算 主要工作:設(shè)計求解問題的過程 缺點:對于龐大、復雜的程序難以開發(fā)和維護,面向過程程序設(shè)計的基本概念,設(shè)計思路 自頂向下、逐步求精。采用模塊分解與功能抽象,自頂向下、分而治之。 程序結(jié)構(gòu) 按功能劃分為若干個基本模塊,形成一個樹狀結(jié)構(gòu)。 各模塊間的關(guān)系盡可能簡單,功能上相對獨立;每一模塊內(nèi)部均是由順序、選擇和循環(huán)三種基本結(jié)構(gòu)組成。 其模塊化實現(xiàn)的具體方法是使用子程序。,

2、面向過程程序設(shè)計的基本概念,優(yōu)點 有效地將一個較復雜的程序設(shè)計任務(wù)分解成許多易于控制和處理的子任務(wù),便于開發(fā)和維護。,面向過程程序設(shè)計的基本概念,程序數(shù)據(jù)結(jié)構(gòu)算法,缺點:可重用性差、數(shù)據(jù)安全性差、難以開發(fā)圖形界面的應用 把數(shù)據(jù)和處理數(shù)據(jù)的過程分離。 當數(shù)據(jù)結(jié)構(gòu)改變時,所有相關(guān)的處理過程都要進行相應的修改。 圖形用戶界面的應用,很難用過程來描述和實現(xiàn),開發(fā)和維護都很困難。,面向過程程序設(shè)計的基本概念,將數(shù)據(jù)及對數(shù)據(jù)的操作封裝在一起,作為一個相互依存、不可分離的整體對象。 對同類型對象抽象出其共性,形成類。 類通過外部接口,與外界發(fā)生關(guān)系。 對象與對象之間通過消息進行通訊。,面向?qū)ο蟪绦蛟O(shè)計的基本

3、概念,優(yōu)點 程序模塊間的關(guān)系更為簡單,程序模塊的獨立性、數(shù)據(jù)的安全性就有了良好的保障。 通過繼承與多態(tài)性,可以大大提高程序的可重用性,使得軟件的開發(fā)和維護都更為方便。,程序?qū)ο笙?面向?qū)ο蟪绦蛟O(shè)計的基本概念,不同于面向過程的程序設(shè)計中以具體的解題過程為研究和實現(xiàn)的主體,面向?qū)ο蟮某绦蛟O(shè)計是以需解決的問題中所涉及到的各種對象為主要矛盾。 更確切地,面向?qū)ο蠹夹g(shù)中的對象就是現(xiàn)實世界中某個具體的物理實體在計算機邏輯中的映射和體現(xiàn)。,對象、類與實體,圖1 對象、實體與類,對象、類與實體,類是面向?qū)ο蠹夹g(shù)中一個非常重要的概念。簡單地說,類是同種對象的集合與抽象。為了處理問題的方便,在面向?qū)ο蟮某绦蛟O(shè)計

4、中定義了類的概念來表述同種對象的公共屬性和特點。從這個意義上來說,類是一種抽象的數(shù)據(jù)類型,它是所有具有一定共性的對象的抽象,而屬于類的某一個對象則被稱為是類的一個實例,是類的一次實例化的結(jié)果。,類,“對象”是現(xiàn)實世界的實體或概念在計算機邏輯中的抽象表示。具體地,對象是具有唯一對象名和固定對外接口的一組屬性和操作的集合。其中對象名是區(qū)別于其他對象的標志;對外接口是對象在約定好的運行框架和消息傳遞機制中與外界通信的通道;對象的靜態(tài)屬性表示了它所處的狀態(tài);而對象的操作則用來改變對象的狀態(tài)以達到特定的功能。對象最主要的特點是以數(shù)據(jù)為中心,它是一個集成了數(shù)據(jù)和其上操作的獨立、自恰的邏輯單位。,對象,狀態(tài)

5、和行為是對象的主要屬性。 對象的狀態(tài)又稱為對象的靜態(tài)屬性,主要指對象內(nèi)部所包含的各種信息,也就是變量。每個對象個體都具有自己專有的內(nèi)部變量,這些變量的值標明了對象所處的狀態(tài)。當對象經(jīng)過某種操作和行為而發(fā)生狀態(tài)改變時,具體地就體現(xiàn)為它的屬性變量的內(nèi)容的改變。通過檢查對象屬性變量的內(nèi)容,就可以了解這個對象當前所處于的狀態(tài)。,對象的屬性,圖2 對象的屬性和行為,從圖2中可以看出,對象的方法一方面把對象的內(nèi)部變量包裹、封裝、保護起來,使得只有對象自己的方法才能操作這些內(nèi)部變量;另一方面,對象的方法還是對象與外部環(huán)境和其他對象交互、通信的接口,對象的環(huán)境和其他對象可以通過這個接口來調(diào)用對象的方法,操縱對

6、象的行為和改變對象的狀態(tài)。,對象的屬性,方法:作用在對象上的行為,對象的交互是通過對象的方法完成的。 消息:一個對象向另一個對象發(fā)出的請求被成為消息。對象有兩類消息:共有消息和私有消息。消息有三個性質(zhì): 同一個對象可以接收多個不同的消息; 相同形式的消息可以傳遞給不同的對象; 對象對消息的響應不是必須的。,對象的交互,抽象:是指通過特定的實例或例子抽取共同性質(zhì)形成概念的過程。 封裝:是把對象的屬性和服務(wù)結(jié)合成一個獨立的系統(tǒng)單位。包含兩個含義: 把對象的全部屬性和全部服務(wù)結(jié)合在一起,形成一個不可分割的獨立單位(即對象)。 信息隱蔽,即盡可能隱蔽對象的內(nèi)部細節(jié),對外形成一個邊界,只保留有限的對外接

7、口使之與外部發(fā)生聯(lián)系。,抽象與封裝,封裝的原則在軟件上的反映是:使對象以外的部分不能隨意存取對象的內(nèi)部數(shù)據(jù)(屬性),從而有效的避免了外部錯誤對它的交叉感染,使軟件錯誤能夠局部化,大大減少查錯和排錯的難度。,抽象與封裝,balance interestYTD owner account_number MakeDeposit WithDraw Transfer,MakeDeposit WithDraw Transfer,用戶不能存取的數(shù)據(jù),實現(xiàn)細節(jié) (對用戶不可見),用戶,接口,特殊類的對象擁有其一般類的全部屬性與服務(wù),稱作特殊類對一般類的繼承。例如,輪船、客輪;人、大人。一個類可以是多個一般類的

8、特殊類,它從多個一般類中繼承了屬性與服務(wù),這稱為多繼承。例如,客輪是輪船和客運工具的特殊類。通常我們稱一般類為父類(superclass,超類),特殊類為子類(subclass)。,繼承性,具有繼承關(guān)系的類之間具有以下特性: 類間具有共享特征 類間具有差別或新增部分 類間具有層次結(jié)構(gòu) 繼承對于軟件復用有著重要意義,是面向?qū)ο蠹夹g(shù)能夠提高軟件開發(fā)效率的重要原因之一。,繼承性,繼承的分類 1、單繼承:子類只從一個父類繼承; 2、多繼承:子類從一個以上父類繼承。,繼承性,對象的多態(tài)性是指在父類中定義的屬性或服務(wù)被子類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。這使得同一個屬性或服務(wù)在父類及其

9、各個子類中具有不同的語義。例如:幾何圖形的繪圖方法,橢圓和多邊形都是幾何圖的子類,其繪圖方法功能不同。,多態(tài)性,1、 編譯時多態(tài)性 編譯時確定下來的多態(tài)性:重載 2、 運行時多態(tài)性 動態(tài)運行時才可確定,主要通過繼承結(jié)合動 態(tài)綁定獲得:重定義,多態(tài)的類型,問題:輸入圓的半徑,求圓的周長和面積,數(shù)據(jù)描述: 半徑,周長,面積均用實型數(shù)表示 數(shù)據(jù)處理: 輸入半徑 r; 計算周長 = 2*r ; 計算面積 = * r*r ; 輸出半徑,周長,面積;,結(jié)構(gòu)化程序與面向?qū)ο蟪绦?方法一,用結(jié)構(gòu)化方法編程,求圓的周長和面積,/ count the girth and area of circle #inclu

10、de void main () double r, girth, area ; const double PI = 3.1415 ; cout r ; girth = 2 * PI * r ; area = PI * r * r ; cout radius = r endl ; cout girth = girth endl ; cout area = area endl ; ,數(shù)據(jù)描述,數(shù)據(jù)處理,輸入數(shù)據(jù),輸出計算結(jié)果,注釋行,方法二,用面向?qū)ο蠓椒ň幊?,求圓的周長和面積,分析,“圓”是抽象的類類型,建立具體的圓(對象),半徑?,圓的周長 ? 面積 ?,實例化,方法二,用面向?qū)ο蠓椒ň幊?,?/p>

11、圓的周長和面積,分析,圓類 數(shù)據(jù)成員 半徑 成員函數(shù) 置半徑值 求圓的半徑 求周長 求面積,實例化,#include class Circle double radius ; public : void Set_Radius( double r ) radius = r ; double Get_Radius() return radius ; double Get_Girth() return 2 * 3.14f * radius ; double Get_Area() return 3.14f * radius * radius ; ; void main() Circle A, B ;

12、A.Set_Radius( 6.23 ) ; cout A.Radius = A.Get_Radius() endl ; cout A.Girth = A.Get_Girth() endl ; cout A.Area = A.Get_Area() endl ; B.Set_Radius( 10.5 ) ; cout B.radius = B.Get_Radius() endl ; cout B.Girth= B.Get_Girth() endl ; cout B.Area = B.Get_Area() endl ; ,Circle 類定義,數(shù)據(jù)成員,成員函數(shù),建立對象 (類變量),通過對象 調(diào)用類的成員函數(shù),編輯程序,在VC集成開發(fā)環(huán)境 選擇新建文件命令,程序的編譯執(zhí)行,編輯程序,在彈出對

溫馨提示

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

評論

0/150

提交評論