第十四章VisualC面向?qū)ο缶幊蘝第1頁
第十四章VisualC面向?qū)ο缶幊蘝第2頁
第十四章VisualC面向?qū)ο缶幊蘝第3頁
第十四章VisualC面向?qū)ο缶幊蘝第4頁
第十四章VisualC面向?qū)ο缶幊蘝第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、聯(lián)系方式:北京源智天下科技有限公司第十四講:第十四講:visual c+面向?qū)ο缶幊?楊章偉楊章偉e-mail:1-2北京源智天下科技有限公司聯(lián)系方式:課程內(nèi)容安排課程內(nèi)容安排面向?qū)ο蠹夹g(shù)基本概念面向?qū)ο蠹夹g(shù)基本概念對象和類對象和類對象的屬性和方法對象的屬性和方法封裝、繼承和多態(tài)封裝、繼承和多態(tài) visual c+面向?qū)ο蟪绦蛟O(shè)計面向?qū)ο蟪绦蛟O(shè)計 綜合練習(xí)綜合練習(xí)思考和習(xí)題思考和習(xí)題 1-3北京源智天下科技有限公司聯(lián)系方式:面向?qū)ο蠹夹g(shù)基本概念面向?qū)ο蠹夹g(shù)基本概念 傳統(tǒng)的軟件開發(fā)技術(shù)(如結(jié)構(gòu)化技術(shù))是采用自頂向下傳統(tǒng)的軟件開發(fā)技術(shù)(如結(jié)構(gòu)化技術(shù))是采用自頂向下的思想指導(dǎo)程序設(shè)計,即將目標(biāo)劃分為

2、若干子目標(biāo),子的思想指導(dǎo)程序設(shè)計,即將目標(biāo)劃分為若干子目標(biāo),子目標(biāo)再進(jìn)一步劃分下去,直到目標(biāo)能被程序設(shè)計實現(xiàn)為目標(biāo)再進(jìn)一步劃分下去,直到目標(biāo)能被程序設(shè)計實現(xiàn)為止。止。面向?qū)ο蠹夹g(shù)根據(jù)現(xiàn)實生活中的具體實體,將程序的實面向?qū)ο蠹夹g(shù)根據(jù)現(xiàn)實生活中的具體實體,將程序的實現(xiàn)分解為一個一個具體對象的實現(xiàn),這是更符合人的思現(xiàn)分解為一個一個具體對象的實現(xiàn),這是更符合人的思維方式的一種方法。比如,在生產(chǎn)一輛汽車的過程中,維方式的一種方法。比如,在生產(chǎn)一輛汽車的過程中,將組成汽車的各個零件都先生產(chǎn)出來,再拼合成汽車,將組成汽車的各個零件都先生產(chǎn)出來,再拼合成汽車,這就是面向?qū)ο蠹夹g(shù),如圖這就是面向?qū)ο蠹夹g(shù),如圖1

3、4-1所示。所示。1-4北京源智天下科技有限公司聯(lián)系方式:發(fā)動機(jī)輪胎汽車 對象應(yīng)用程序(對象)1-5北京源智天下科技有限公司聯(lián)系方式:面向?qū)ο蟪绦蛟O(shè)計語言面向?qū)ο蟪绦蛟O(shè)計語言 最早出現(xiàn)的面向?qū)ο蟪绦蛟O(shè)計語言是最早出現(xiàn)的面向?qū)ο蟪绦蛟O(shè)計語言是simula語言。該語言是語言。該語言是1967年挪威科學(xué)家年挪威科學(xué)家ole-johan dahl和和kristen nygaard正式正式發(fā)布的。其引入了所有后來面向?qū)ο蟪绦蛟O(shè)計語言所遵循的發(fā)布的。其引入了所有后來面向?qū)ο蟪绦蛟O(shè)計語言所遵循的基礎(chǔ)概念,例如對象、類、繼承等?;A(chǔ)概念,例如對象、類、繼承等。隨后,比較經(jīng)典的面向?qū)ο蟪绦蛟O(shè)計語言有隨后,比較經(jīng)

4、典的面向?qū)ο蟪绦蛟O(shè)計語言有smalltalk、c+及及java等??傮w來說,面向?qū)ο蟮某绦蛟O(shè)計語言有如下的一等??傮w來說,面向?qū)ο蟮某绦蛟O(shè)計語言有如下的一些特點。些特點。訪問控制。在訪問控制。在c+中,類有私有的(中,類有私有的(private)、保護(hù)的()、保護(hù)的(protected)和公有的()和公有的(public)3種訪問機(jī)制。種訪問機(jī)制。封裝:將一組數(shù)據(jù)和與這組數(shù)據(jù)有關(guān)的操作集合組裝在一起封裝:將一組數(shù)據(jù)和與這組數(shù)據(jù)有關(guān)的操作集合組裝在一起,形成一個能動的實體,也就是對象,形成一個能動的實體,也就是對象繼承性。通過對已有對象進(jìn)行增加或部分修改的方法建立新繼承性。通過對已有對象進(jìn)行增加

5、或部分修改的方法建立新的對象。的對象。多態(tài)性。多態(tài)性意味著存在多種形式,能使人們在程序中激多態(tài)性。多態(tài)性意味著存在多種形式,能使人們在程序中激活任何屬于某一類的成員函數(shù)。活任何屬于某一類的成員函數(shù)。1-6北京源智天下科技有限公司聯(lián)系方式:對象對象 面向?qū)ο蠹夹g(shù)不同于傳統(tǒng)的結(jié)構(gòu)化技術(shù),主要體現(xiàn)在其使用面向?qū)ο蠹夹g(shù)不同于傳統(tǒng)的結(jié)構(gòu)化技術(shù),主要體現(xiàn)在其使用對象來進(jìn)行程序開發(fā)。對象(對象來進(jìn)行程序開發(fā)。對象(object),是指包含數(shù)據(jù)),是指包含數(shù)據(jù)及其操作的實體,也即在傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu)中加入一些過及其操作的實體,也即在傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu)中加入一些過程,使用這些過程來賦予對象對數(shù)據(jù)的操作功能,這些程,使用

6、這些過程來賦予對象對數(shù)據(jù)的操作功能,這些過程就是后面要提到的成員函數(shù),如圖過程就是后面要提到的成員函數(shù),如圖14-2所示。所示。1-7北京源智天下科技有限公司聯(lián)系方式:在現(xiàn)實世界中,對象指的就是具體的事物,例如:飛機(jī)、汽在現(xiàn)實世界中,對象指的就是具體的事物,例如:飛機(jī)、汽車、人等。每個對象都含有自己的內(nèi)部狀態(tài)和行為,例車、人等。每個對象都含有自己的內(nèi)部狀態(tài)和行為,例如人具有名字、身高、體重等內(nèi)部狀態(tài),也具有走路、如人具有名字、身高、體重等內(nèi)部狀態(tài),也具有走路、吃飯等行為。在面向?qū)ο蟮母拍钪?,將對象的?nèi)部狀態(tài)吃飯等行為。在面向?qū)ο蟮母拍钪?,將對象的?nèi)部狀態(tài)稱為屬性,將其行為稱為方法或事件。對象之

7、間的聯(lián)系稱為屬性,將其行為稱為方法或事件。對象之間的聯(lián)系通過消息來傳遞,消息機(jī)制是對象間相互聯(lián)系和相互作通過消息來傳遞,消息機(jī)制是對象間相互聯(lián)系和相互作用的方式。用的方式。說明:在說明:在visual c+中,整個應(yīng)用程序可以是一個對象,對中,整個應(yīng)用程序可以是一個對象,對象也是應(yīng)用程序的一個部分,例如控件和圖表等象也是應(yīng)用程序的一個部分,例如控件和圖表等 1-8北京源智天下科技有限公司聯(lián)系方式:類類 類(類(class),是指具有相似內(nèi)部狀態(tài)和行為的實體的集合。在),是指具有相似內(nèi)部狀態(tài)和行為的實體的集合。在類的構(gòu)造過程中,有由特殊到一般的歸納法和由一般到特殊的演類的構(gòu)造過程中,有由特殊到一

8、般的歸納法和由一般到特殊的演繹法兩種方法。在歸納的過程中,從一個個具體的事物中把共同繹法兩種方法。在歸納的過程中,從一個個具體的事物中把共同的特征抽取出來,形成一個一般的概念,即的特征抽取出來,形成一個一般的概念,即“歸類歸類”。例如:人。例如:人、獅子、老鷹等,因為其都能動,所以將其歸類為動物,如圖、獅子、老鷹等,因為其都能動,所以將其歸類為動物,如圖14-3所示。所示。人老鷹獅子動物1-9北京源智天下科技有限公司聯(lián)系方式:封裝封裝 封裝是面向?qū)ο缶幊趟枷胫械闹匾匦灾?,其作用在于定封裝是面向?qū)ο缶幊趟枷胫械闹匾匦灾唬渥饔迷谟诙x對象和操作,只提供抽象的接口,并隱藏其具體實現(xiàn)義對象和

9、操作,只提供抽象的接口,并隱藏其具體實現(xiàn)。封裝的結(jié)果是類,也即把有相似屬性(成員變量)、。封裝的結(jié)果是類,也即把有相似屬性(成員變量)、操作(成員函數(shù))的事物綁在一起處理(即一個類)。操作(成員函數(shù))的事物綁在一起處理(即一個類)。例如,為了方便管理公司職工,可以給職工寫一個類,該類例如,為了方便管理公司職工,可以給職工寫一個類,該類的屬性可以有年齡、性別、姓名、入職日期等,操作可的屬性可以有年齡、性別、姓名、入職日期等,操作可以有開除、調(diào)動等,這就實現(xiàn)了封裝,如圖以有開除、調(diào)動等,這就實現(xiàn)了封裝,如圖14-8所示。所示。職工類讀取年齡讀取姓名調(diào)動輸出結(jié)果操作1-10北京源智天下科技有限公司聯(lián)

10、系方式:例如,將時鐘的數(shù)據(jù)和功能封裝起來,構(gòu)成一個時鐘類。按例如,將時鐘的數(shù)據(jù)和功能封裝起來,構(gòu)成一個時鐘類。按c+的語法,時鐘類的聲明如下:的語法,時鐘類的聲明如下:class clock public: /公共成員,用作外部接口公共成員,用作外部接口void settime(int newh,int newm,int news); void showtime(); private: /私有成員,外部無法訪問私有成員,外部無法訪問 int hour;int minute;int second; 1-11北京源智天下科技有限公司聯(lián)系方式:繼承繼承 繼承是面向?qū)ο蟪绦蛟O(shè)計的又一個重要概念,其可以

11、將現(xiàn)實繼承是面向?qū)ο蟪绦蛟O(shè)計的又一個重要概念,其可以將現(xiàn)實生活的概念對應(yīng)到面向?qū)ο蟮某绦蜻壿嬛?。例如,車是生活的概念對?yīng)到面向?qū)ο蟮某绦蜻壿嬛?。例如,車是一個類,具有一些公共的性質(zhì);而汽車也是一類,但其一個類,具有一些公共的性質(zhì);而汽車也是一類,但其屬于車,所以汽車是繼承于車的,而奔馳汽車又繼承與屬于車,所以汽車是繼承于車的,而奔馳汽車又繼承與汽車,如圖汽車,如圖14-9所示。所示。車汽車類繼承于奔馳汽車?yán)^承于1-12北京源智天下科技有限公司聯(lián)系方式:一個類(派生類、子類)是從另一個類(基類、父類)派生一個類(派生類、子類)是從另一個類(基類、父類)派生而來,派生類繼承了基類的所有特性。在而來

12、,派生類繼承了基類的所有特性。在c+中,一個派中,一個派生類可以從一個基類派生,也可以從多個基類派生。從生類可以從一個基類派生,也可以從多個基類派生。從一個基類派生的繼承稱為單繼承;從多個基類派生的繼一個基類派生的繼承稱為單繼承;從多個基類派生的繼承稱為多繼承。一般來說,繼承有承稱為多繼承。一般來說,繼承有3種方式。種方式。公有繼承:也稱為公有繼承:也稱為public繼承類型。繼承類型。保護(hù)繼承:也稱為保護(hù)繼承:也稱為protected繼承類型。繼承類型。私有繼承:也稱為私有繼承:也稱為private繼承類型。繼承類型。1-13北京源智天下科技有限公司聯(lián)系方式:繼承類型與成員類型的繼承關(guān)系繼承

13、類型與成員類型的繼承關(guān)系 根據(jù)繼承的不同類型,基類的成員在派生類中的訪問控制受根據(jù)繼承的不同類型,基類的成員在派生類中的訪問控制受繼承類型的限制,具體限制如表繼承類型的限制,具體限制如表14-2所示。所示。 存取方式存取方式繼承類型繼承類型publicprotectedprivate公有繼承公有繼承publicprotected不可見不可見保護(hù)繼承保護(hù)繼承protectedprotected不可見不可見私有繼承私有繼承privateprivate不可見不可見1-14北京源智天下科技有限公司聯(lián)系方式:多態(tài)多態(tài) 多態(tài)性也是面向?qū)ο蟪绦蛟O(shè)計的重要特征之一,多態(tài)性是指發(fā)出多態(tài)性也是面向?qū)ο蟪绦蛟O(shè)計的重

14、要特征之一,多態(tài)性是指發(fā)出同樣的消息被不同類型的對象接收時導(dǎo)致完全不同的行為。例如同樣的消息被不同類型的對象接收時導(dǎo)致完全不同的行為。例如,動物都有吃的行為,而羊和狼吃的方式和內(nèi)容都不一樣,如圖,動物都有吃的行為,而羊和狼吃的方式和內(nèi)容都不一樣,如圖14-10所示。所示。 1-15北京源智天下科技有限公司聯(lián)系方式:visual c+面向?qū)ο蟪绦蛟O(shè)計面向?qū)ο蟪绦蛟O(shè)計 visual c+ 6.0不僅僅是一個編譯器,更是一個全面的應(yīng)用不僅僅是一個編譯器,更是一個全面的應(yīng)用程序開發(fā)環(huán)境,使用該軟件可以充分利用具有面向?qū)ο筇匦猿绦蜷_發(fā)環(huán)境,使用該軟件可以充分利用具有面向?qū)ο筇匦缘牡腸+來開發(fā)出專業(yè)級的來

15、開發(fā)出專業(yè)級的windows應(yīng)用程序。應(yīng)用程序。 1-16北京源智天下科技有限公司聯(lián)系方式:類的定義類的定義 c+語言中類的定義語法為:語言中類的定義語法為:class 類名稱類名稱public|protect|private:成員數(shù)據(jù)類型成員數(shù)據(jù)類型 成員名稱;成員名稱;成員函數(shù)成員函數(shù);下面是一個簡單的類(下面是一個簡單的類(class)的定義,該類沒有定義函數(shù),)的定義,該類沒有定義函數(shù), class student public:int number;char name10;int age; ;1-17北京源智天下科技有限公司聯(lián)系方式:類的繼承類的繼承 前面的面向?qū)ο蠡A(chǔ)理論中提到了,

16、類是可以繼承(前面的面向?qū)ο蠡A(chǔ)理論中提到了,類是可以繼承(inherit)的,也即基于現(xiàn)有的類再創(chuàng)建新類。此處假定類)的,也即基于現(xiàn)有的類再創(chuàng)建新類。此處假定類b繼承繼承了類了類a,那么,則稱那么,則稱a為基類(為基類(base class,也叫父類),也叫父類),b為派生類(為派生類(derived class,也叫子類)。派生類不,也叫子類)。派生類不但擁有自己新的成員變量和成員函數(shù),還可以擁有基類但擁有自己新的成員變量和成員函數(shù),還可以擁有基類的成員變量和成員函數(shù)。一個派生類可以只繼承一個類的成員變量和成員函數(shù)。一個派生類可以只繼承一個類,也可以繼承多個類,這種情況則稱為多重繼承。,也

17、可以繼承多個類,這種情況則稱為多重繼承。1-18北京源智天下科技有限公司聯(lián)系方式:單一繼承是最普通的一種繼承形式,在該繼承形式中,派生單一繼承是最普通的一種繼承形式,在該繼承形式中,派生類僅有一個基類,繼承的派生類定義方法如下:類僅有一個基類,繼承的派生類定義方法如下:class 派生類名派生類名:訪問權(quán)限訪問權(quán)限 基類名稱基類名稱.;例如,要實現(xiàn)類例如,要實現(xiàn)類b與類與類a的繼承關(guān)系,在定義類的繼承關(guān)系,在定義類b之前必須之前必須已定義了類已定義了類a,并用如下的格式定義類,并用如下的格式定義類b。class b:public或或private a.;1-19北京源智天下科技有限公司聯(lián)系方式

18、:多重繼承是指一個類可以從多個基類中派生出來。在派生類由多多重繼承是指一個類可以從多個基類中派生出來。在派生類由多個基類派生出來的多重繼承模式中,基類是用基類表語法成份個基類派生出來的多重繼承模式中,基類是用基類表語法成份來說明的,多重繼承的語法與單一繼承很類似,只需要在聲明來說明的,多重繼承的語法與單一繼承很類似,只需要在聲明繼承的多個類之間加上逗號來分隔,如下定義形式:繼承的多個類之間加上逗號來分隔,如下定義形式:class 派生類名:訪問權(quán)限派生類名:訪問權(quán)限 基類名稱,訪問權(quán)限基類名稱,訪問權(quán)限 基類名稱,訪問基類名稱,訪問權(quán)限權(quán)限 基類名稱基類名稱;例如例如b類是由類類是由類c和類和

19、類d派生的,聲明如下:派生的,聲明如下:class b:public c,public d1-20北京源智天下科技有限公司聯(lián)系方式:虛函數(shù)與多態(tài)性虛函數(shù)與多態(tài)性 在面向?qū)ο蟮某绦蛟O(shè)計中,經(jīng)常用到類的繼承,目的在于保留基在面向?qū)ο蟮某绦蛟O(shè)計中,經(jīng)常用到類的繼承,目的在于保留基類的某種特性,但并不是所有基類的特性都適合于派生類,也類的某種特性,但并不是所有基類的特性都適合于派生類,也就是說,這個派生類并不想繼承基類的所有內(nèi)容,因此,引出就是說,這個派生類并不想繼承基類的所有內(nèi)容,因此,引出了虛(了虛(virtual)函數(shù)的概念。)函數(shù)的概念。 利用利用virtual函數(shù)的特性可以讓類只具有類型而沒有實際操作內(nèi)容函數(shù)的特性可以讓類只具有類型而沒有實際操作內(nèi)容,形成抽象類。這種類不用來聲明也不能聲明對象,只為了讓,形成抽象類。這種類不用來聲明也不能聲明對象,只為了讓其他類繼承形成該類的基本類型。其他類繼承形成該類的基本類型。 例如:例如:class canimalpublic:void eat();virtual void

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論