第七章 類和對象_第1頁
第七章 類和對象_第2頁
第七章 類和對象_第3頁
第七章 類和對象_第4頁
第七章 類和對象_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第第頁第七章類和對象Visualc++程序設(shè)計(jì)教學(xué)ppt

VisualC++程序設(shè)計(jì)語言

第7章

類和對象2022-7-2江蘇科技高校計(jì)算機(jī)科學(xué)與工程學(xué)院計(jì)算機(jī)基礎(chǔ)教學(xué)部1

Visualc++程序設(shè)計(jì)教學(xué)ppt

第7章

類和對象

7.1面對對象程序設(shè)計(jì)概述7.2類和對象

7.3構(gòu)造函數(shù)7.4析構(gòu)函數(shù)

2022-7-2

江蘇科技高校計(jì)算機(jī)科學(xué)與工程學(xué)院計(jì)算機(jī)基礎(chǔ)教學(xué)部

Visualc++程序設(shè)計(jì)教學(xué)ppt

7.1面對對象程序設(shè)計(jì)概述1、傳統(tǒng)開發(fā)方法的不足面對過程的程序設(shè)計(jì)方法(結(jié)構(gòu)化程序設(shè)計(jì)方法)存在的主要問題:(1)軟件的穩(wěn)定性、可修改性和可重用性都較差;(2)軟件可維護(hù)性差;(3)開發(fā)出的軟件不能滿意用戶需要。

2022-7-2

江蘇科技高校計(jì)算機(jī)科學(xué)與工程學(xué)院計(jì)算機(jī)基礎(chǔ)教學(xué)部

Visualc++程序設(shè)計(jì)教學(xué)ppt

7.1面對對象程序設(shè)計(jì)概述2、面對對象程序設(shè)計(jì)概念:面對對象程序設(shè)計(jì)(ObjectOrientedProgramming,簡稱OOP)把數(shù)據(jù)及其操作作為一個(gè)整體對待,其程序一般由類的定義和類的運(yùn)用兩部分組成,通過向?qū)ο蟀l(fā)送消息來完成相應(yīng)的操作。特點(diǎn):封裝性(隱蔽性):通過類將對象的屬性(數(shù)據(jù))和行為(處理數(shù)據(jù)的函數(shù))封裝為整體,通過接口與外界交互;繼承性(派生性):由基類產(chǎn)生派生類;多態(tài)性:不同的對象,收到同一消息可以產(chǎn)生不同的結(jié)果。2022-7-2江蘇科技高校計(jì)算機(jī)科學(xué)與工程學(xué)院計(jì)算機(jī)基礎(chǔ)教學(xué)部4

Visualc++程序設(shè)計(jì)教學(xué)ppt

7.2類和對象7.2.1類和對象的概念

7.2.2類的定義7.2.3成員函數(shù)7.2.4對象的定義和運(yùn)用7.2.5類的作用域

2022-7-2

江蘇科技高校計(jì)算機(jī)科學(xué)與工程學(xué)院計(jì)算機(jī)基礎(chǔ)教學(xué)部

Visualc++程序設(shè)計(jì)教學(xué)ppt

7.2.1類和對象的概念1、對象的概念對象是詳細(xì)的事物。對象具有各自的特征。對象的特征用數(shù)據(jù)值來描述。如:06400020陳紅計(jì)算機(jī)9006400021張藍(lán)計(jì)算機(jī)95對象具有行為,對象及其操作稱為對象的行為。如輸出陳紅的信息,轉(zhuǎn)變其特征。OOP實(shí)現(xiàn)了對象數(shù)據(jù)和操作的結(jié)合,把數(shù)據(jù)和操作封裝在統(tǒng)一體中。2022-7-2江蘇科技高校計(jì)算機(jī)科學(xué)與工程學(xué)院計(jì)算機(jī)基礎(chǔ)教學(xué)部6

Visualc++程序設(shè)計(jì)教學(xué)ppt

7.2.1類和對象的概念2、類的概念類是具有相同類型對象的抽象。從程序設(shè)計(jì)的角度看,類是用戶定義的數(shù)據(jù)類型,對象就是類類型(classtype)的變量。類具有屬性,它是對象特征的抽象,用數(shù)據(jù)結(jié)構(gòu)來描述類的屬性。類具有操作,它是對象行為的抽象,用操作名和實(shí)現(xiàn)該操作的方法來描述。VC++中,把類的成員分為兩個(gè)部分:數(shù)據(jù)(相當(dāng)于屬性)和對數(shù)據(jù)的操作(相當(dāng)于行為,用函數(shù)實(shí)現(xiàn))。2022-7-2江蘇科技高校計(jì)算機(jī)科學(xué)與工程學(xué)院計(jì)算機(jī)基礎(chǔ)教學(xué)部7

Visualc++程序設(shè)計(jì)教學(xué)ppt

7.2.1類和對象的概念3、類和對象的關(guān)系對象的抽象是類,類的詳細(xì)化就是對象,也可以說類的實(shí)例是對象。其關(guān)系如圖7-1。類:同學(xué)屬性:數(shù)據(jù)結(jié)構(gòu)2022-7-2

對象:陳紅特征:

學(xué)號實(shí)例姓名專業(yè)抽象成果圖7-1類與對象的關(guān)系

06400020陳紅計(jì)算機(jī)908

數(shù)據(jù)值

江蘇科技高校計(jì)算機(jī)科學(xué)與工程學(xué)院計(jì)算機(jī)基礎(chǔ)教學(xué)部

Visualc++程序設(shè)計(jì)教學(xué)ppt

7.2.2類的定義VC++中類定義的一般格式如下:classClassName{private:數(shù)據(jù)成員成員函數(shù)public:數(shù)據(jù)成員成員函數(shù)protected:數(shù)據(jù)成員成員函數(shù)};2022-7-2

//類頭//類體開始class是定義類的關(guān)鍵字,ClassName是類名,為標(biāo)識符。類的成員放在類體中:數(shù)據(jù)成員是變量的說明語句;成員函數(shù)是對數(shù)據(jù)成員的操作。類體從“{”開始到“}”結(jié)束。

//類體結(jié)束9

江蘇科技高校計(jì)算機(jī)科學(xué)與工程學(xué)院計(jì)算機(jī)基礎(chǔ)教學(xué)部

Visualc++程序設(shè)計(jì)教學(xué)ppt

7.2.2類的定義關(guān)鍵字public(公有)、private(私有)和protected(愛護(hù))稱為訪問掌握符,用于設(shè)置類成員的訪問權(quán)限。public表示在其后聲明的全部成員在類內(nèi)、類外均可以被訪問;private表示在其后聲明的全部成員只能在該類內(nèi)被訪問;protected表示在其后聲明的全部成員可以在該類內(nèi)或派生類內(nèi)被訪問。三個(gè)關(guān)鍵字的運(yùn)用次數(shù)、順次不限,有效范圍至涌現(xiàn)下一個(gè)關(guān)鍵字或類定義結(jié)束止。類中缺省訪問權(quán)限說明的成員聲明是private的。2022-7-2江蘇科技高校計(jì)算機(jī)科學(xué)與工程學(xué)院計(jì)算機(jī)基礎(chǔ)教學(xué)部10

Visualc++程序設(shè)計(jì)教學(xué)ppt

7.2.2類的定義定義類時(shí)留意:類的定義是一個(gè)類型說明語句,最末的語句結(jié)束符“;”不能少。類是一種數(shù)據(jù)類型,定義時(shí)系統(tǒng)不為類安排存儲空間,所以不能對類的數(shù)據(jù)成員初始化。類中的任何數(shù)據(jù)成員不能運(yùn)用關(guān)鍵字e*tern、auto或register限定其存儲類型。但可以用static限定存儲類型。類中數(shù)據(jù)成員的類型可以是任意的,如整型、實(shí)型、字符型、指針、引用等,還可以是另一個(gè)類的對象。結(jié)構(gòu)體是類的特例,在結(jié)構(gòu)體中既可以定義成員函數(shù),也可以指定訪問權(quán)限。不同之處在于結(jié)構(gòu)體中缺省的訪問掌握符為public。2022-7-2江蘇科技高校計(jì)算機(jī)科學(xué)與工程學(xué)院計(jì)算機(jī)基礎(chǔ)教學(xué)部11

Visualc++程序設(shè)計(jì)教學(xué)ppt

7.2.2類的定義例7-1定義一個(gè)平面二維坐標(biāo)類。算法:二維坐標(biāo)由橫坐標(biāo)*和縱坐標(biāo)y組成,用數(shù)據(jù)成員*和y表示;行為包括取坐標(biāo)、置坐標(biāo)、打印坐標(biāo),用相應(yīng)的成員函數(shù)實(shí)現(xiàn)。編程實(shí)現(xiàn):classPoint{//定義類名為Point的類private://定義私有數(shù)據(jù)成員int*;//*表示橫坐標(biāo)inty;//y表示縱坐標(biāo)public://定義公有成員函數(shù)intGet*();//取*坐標(biāo)intGetY();//取y坐標(biāo)voidSet*Y(int,int);//置*、y坐標(biāo)voidprint*Y();//打印*、y坐標(biāo)};2022-7-2

學(xué)習(xí)與實(shí)踐:通常類的數(shù)據(jù)成員是私有的,而成員函數(shù)是公有的。該類定義能否省略關(guān)鍵字private或關(guān)鍵字public?成員*、y能否如下定義:int*,y;12

江蘇科技高校

計(jì)算機(jī)科學(xué)與工程學(xué)院計(jì)算機(jī)基礎(chǔ)教學(xué)部

Visualc++程序設(shè)計(jì)教學(xué)ppt

7.2.3類的成員函數(shù)1、成員函數(shù)的定義。類的成員函數(shù)既可以在類中定義,也可以在類中說明、類外定義。在類外定義時(shí)肯定要先在類中說明,此時(shí)為函數(shù)原型說明語句;在類外定義的格式為:函數(shù)類型類名::成員函數(shù)名(形參表){類的成員函數(shù)無論是在類函數(shù)體中定義,還是在類外定義,}都是類的一部份,都可以徑直訪問類中的全部成員。2022-7-2江蘇科技高校計(jì)算機(jī)科學(xué)與工程學(xué)院計(jì)算機(jī)基礎(chǔ)教學(xué)部13

Visualc++程序設(shè)計(jì)教學(xué)ppt

7.2.3類的成員函數(shù)例7-2例7-1中Point類的成員函數(shù)定義。intPoint::Get*(){return*;}intPoint::GetY(){returny;}voidPoint::print*Y(){cout(*,y“)\n”;}voidPoint::Set*Y(inta,intb){*=a;y=b;}學(xué)習(xí)與實(shí)踐:能否將成員函數(shù)定義中的Point::去掉?2022-7-2江蘇科技高校計(jì)算機(jī)科學(xué)與工程學(xué)院計(jì)算機(jī)基礎(chǔ)教學(xué)部14

Visualc++程序設(shè)計(jì)教學(xué)ppt

7.2.3類的成員函數(shù)以下類的定義是否正確?

classPoint{int*,y;public:intGet*(){return*;}intGetY();//AvoidSet*Y(inta,intb){*=a;y=b;}voidprint*Y(){cout(*,y“)\n”;}};intPoint::GetY(){returny;}//B

學(xué)習(xí)與實(shí)踐:(1)能否去掉A行?(2)能否去掉B行?

2022-7-2

江蘇科技高校計(jì)算機(jī)科學(xué)與工程學(xué)院計(jì)算機(jī)基礎(chǔ)教學(xué)部

Visualc++程序設(shè)計(jì)教學(xué)ppt

7.2.3類的成員函數(shù)2、成員函數(shù)的內(nèi)聯(lián)特性。在類中定義的類的成員函數(shù),是內(nèi)聯(lián)函數(shù);類中說明、類外定義的成員函數(shù)不具有內(nèi)聯(lián)特性,要使其成為內(nèi)聯(lián)函數(shù),在類體外定義時(shí),需要在函數(shù)類型前加關(guān)鍵字inline,其定義的格式為:inline函數(shù)類型類名::成員函數(shù)名(形參表){函數(shù)體}2022-7-2江蘇科技高校計(jì)算機(jī)科學(xué)與工程學(xué)院計(jì)算機(jī)基礎(chǔ)教學(xué)部16

Visualc++程序設(shè)計(jì)教學(xué)ppt

7.2.3類的成員函數(shù)3、成員函數(shù)的重載與缺省參數(shù)。與一般函數(shù)一樣,類的成員函數(shù)既可以重載,也可以具有缺省參數(shù)。例7-3定義重載的成員函數(shù)及缺省參數(shù)的成員函數(shù)。classPoint{學(xué)習(xí)與實(shí)踐:int*,y;(1)缺省參數(shù)既可以在說明public:時(shí)給出,也可以在定義時(shí)voidSet*(inta=0){*=a;}voidSetY(int);//A給出,但不能在說明和定voidSet*Y(int=0);義時(shí)同時(shí)給出。voidSet*Y(int,int);(2)能否把A行改為:};voidSetY(int=0);voidPoint::SetY(intb=1){y=b;}voidPoint::Set*Y(intb){*=0;y=b;}voidPoint::Set*Y(inta,intb){*=a;y=b;}2022-7-2江蘇科技高校計(jì)算機(jī)科學(xué)與工程學(xué)院計(jì)算機(jī)基礎(chǔ)教學(xué)部17

Visualc++程序設(shè)計(jì)教學(xué)ppt

7.2.4對象的定義和運(yùn)用1、對象的定義定義了類以后,就可以定義對象(類型的變量)。(1)定義對象的基本格式類名對象名1,對象名2,…,對象名n;(2)定義對象的方法①創(chuàng)建類的同時(shí)定義對象。②創(chuàng)建類后再定義對象。③不定義類名徑直定義對象。(3)關(guān)于對象

定義的幾點(diǎn)說明:①對象需要先定義后運(yùn)用。對象也有作用域。②可以定義指針對象、對象數(shù)組、指針對象數(shù)組,引用對象,指向一維數(shù)組的指針對象等。如:PointS,*P,A[8],*B[10],R=S,(*Q)[6];等。③對象也可以動(dòng)態(tài)生成,即由new產(chǎn)生。如:Point*Q=newPoint;2022-7-2江蘇科技高校計(jì)算機(jī)科學(xué)與工程學(xué)院計(jì)算機(jī)基礎(chǔ)教學(xué)部18

Visualc++程序設(shè)計(jì)教學(xué)ppt

7.2.4對象的定義和運(yùn)用例7-4用三種不同的方法定義對象。classPoint{學(xué)習(xí)與實(shí)踐:int*,y;本例中定義的對象哪些public:intGet*(){return*;}是同類型對象?intGetY(){returny;}voidprint*Y(){cout*\ty\n;}}P1,P2;//定義了Point類型的對象P1和P2PointQ1,Q2;//定義了Point類型的對象Q1和Q2class{int*,y;public:intGet*(){return*;}intGetY(){returny;}voidprint*Y(){cout*\t;couty\n;}}R1,R2;//定義了對象R1和R22022-7-2江蘇科技高校計(jì)算機(jī)科學(xué)與工程學(xué)院計(jì)算機(jī)基礎(chǔ)教學(xué)部19

Visualc++程序設(shè)計(jì)教學(xué)ppt

7.2.4對象的定義和運(yùn)用2、對象的運(yùn)用。對象具有類定義的全部數(shù)據(jù)成員及成員函數(shù),一般通過成員運(yùn)算符“.”或“-”來訪問。其基本格式為:(1)通過對象運(yùn)用數(shù)據(jù)成員對象名.成員名(2)通過對象運(yùn)用成員函數(shù)對象名.成員函數(shù)名(實(shí)參表)(3)通過指針運(yùn)用數(shù)據(jù)成員指針對象-成員名(4)通過指針運(yùn)用成員函數(shù)指針對象-成員函數(shù)名(實(shí)參表)對象可以作為函數(shù)參數(shù),是值傳遞;同樣也可以引用傳遞或地址傳遞;對象可以作為函數(shù)的返回值,以及在賦值語句中被復(fù)制。如:2022-7-2江蘇科技高校計(jì)算機(jī)科學(xué)與工程學(xué)院計(jì)算機(jī)基礎(chǔ)教學(xué)部20

Visualc++程序設(shè)計(jì)教學(xué)ppt

7.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論