版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
關(guān)于面向?qū)ο缶幊填惡蛯?duì)象第一頁,共三十二頁,2022年,8月28日第2章類和對(duì)象2.1面向?qū)ο蟪绦蛟O(shè)計(jì)方法概述2.2類的聲明和對(duì)象的定義2.3類的成員函數(shù)2.4對(duì)象成員的引用第二頁,共三十二頁,2022年,8月28日2.1面向?qū)ο蟪绦蛟O(shè)計(jì)方法概述抽象是對(duì)具體對(duì)象(問題)進(jìn)行概括,抽出這一類對(duì)象的公共性質(zhì)并加以描述的過程。先注意問題的本質(zhì)及描述,其次是實(shí)現(xiàn)過程或細(xì)節(jié)。數(shù)據(jù)抽象:描述某類對(duì)象的屬性或狀態(tài)(對(duì)象相互區(qū)別的物理量)。代碼抽象:描述某類對(duì)象的共有的行為特征或具有的功能。抽象的實(shí)現(xiàn):通過類的聲明。第三頁,共三十二頁,2022年,8月28日2.1面向?qū)ο蟪绦蛟O(shè)計(jì)方法概述抽象實(shí)例——鐘表數(shù)據(jù)抽象:intHour,intMinute,intSecond代碼抽象:SetTime(),ShowTime()classClock{public:voidSetTime(intNewH,intNewM,intNewS);
voidShowTime();private:intHour,Minute,Second;};鐘表類第四頁,共三十二頁,2022年,8月28日2.1面向?qū)ο蟪绦蛟O(shè)計(jì)方法概述封裝:將抽象出的數(shù)據(jù)成員、代碼成員相結(jié)合,將它們視為一個(gè)整體。目的是曾強(qiáng)安全性和簡化編程,使用者不必了解具體的實(shí)現(xiàn)細(xì)節(jié),而只需要通過外部接口,以特定的訪問權(quán)限,來使用類的成員。實(shí)現(xiàn)封裝:類聲明中的{}第五頁,共三十二頁,2022年,8月28日2.1面向?qū)ο蟪绦蛟O(shè)計(jì)方法概述繼承與派生是C++中支持層次分類的一種機(jī)制,允許程序員在保持原有類特性的基礎(chǔ)上,進(jìn)行更具體的說明。第六頁,共三十二頁,2022年,8月28日2.1面向?qū)ο蟪绦蛟O(shè)計(jì)方法概述多態(tài):同一名稱,不同的功能實(shí)現(xiàn)方式目的:達(dá)到行為標(biāo)識(shí)統(tǒng)一,減少程序中標(biāo)識(shí)符的個(gè)數(shù)。實(shí)現(xiàn):重載函數(shù)和虛函數(shù)第七頁,共三十二頁,2022年,8月28日2.2類的聲明和對(duì)象的定義classA{intx,y;public:A(inta){x=a;cout<<“1\n”;}A(inta,intb){x=a,y=b;cout<<“2\n”;}};Aa1(3);voidf(void){Ab(2,3);}voidmain(void){Aa2(4,5);f();f();}1222第八頁,共三十二頁,2022年,8月28日2.2類的聲明和對(duì)象的定義類的定義類是一種復(fù)雜的數(shù)據(jù)類型,它是將不同類型的數(shù)據(jù)和與這些數(shù)據(jù)相關(guān)的運(yùn)算封裝在一起的集合體。類將一些數(shù)據(jù)及與數(shù)據(jù)相關(guān)的函數(shù)封裝在一起,使類中的數(shù)據(jù)得到很好的“保護(hù)”。在大型程序中不會(huì)被隨意修改。第九頁,共三十二頁,2022年,8月28日類的定義格式:class類名{private:
成員數(shù)據(jù);
成員函數(shù);
public:
成員數(shù)據(jù);
成員函數(shù);
protected:
成員數(shù)據(jù);
成員函數(shù);};關(guān)鍵字類名私有公有保護(hù)classStudent{private:charName[20];floatMath;floatChiese; public:floataverage;voidSetName(char*name);voidSetMath(floatmath);voidSetChinese(floatch);floatGetAverage(void);};分號(hào)不能少2.2類的聲明和對(duì)象的定義第十頁,共三十二頁,2022年,8月28日2.2類的聲明和對(duì)象的定義priviate限定的成員稱為私有成員,私有成員只能在該類的內(nèi)部使用,即私有成員數(shù)據(jù)只允許該類中成員函數(shù)使用,私有成員函數(shù)只能被該類內(nèi)的成員函數(shù)調(diào)用;類就相當(dāng)于私有成員的作用域。public限定的成員稱為公有成員,公有成員的數(shù)據(jù)或函數(shù)不受類的限制,可以在類內(nèi)或類外自由使用;對(duì)類而言是透明的。protected限定的成員稱為保護(hù)成員,只允許在類內(nèi)及該類的派生類中使用保護(hù)的數(shù)據(jù)或函數(shù)。即保護(hù)成員的作用域是該類及該類的派生類。第十一頁,共三十二頁,2022年,8月28日2.2類的聲明和對(duì)象的定義每一個(gè)限制詞(private等)在類體中可使用多次。一旦使用了限制詞,該限制詞一直有效,直到下一個(gè)限制詞開始為止。如果未加說明,類中成員默認(rèn)的訪問權(quán)限是private,即私有的。第十二頁,共三十二頁,2022年,8月28日2.2類的聲明和對(duì)象的定義classA{floatx,y;
public:voidSetxy(floata,floatb){x=a;y=b;}voidPrint(void){cout<<x<<‘\t’<<y<<endl;}};
在類外不能直接使用x或y,必須通過Setxy()給x或y賦值,通過Print()輸出x或y。xySetxy()Print()A私有數(shù)據(jù)公有函數(shù)第十三頁,共三十二頁,2022年,8月28日2.2類的聲明和對(duì)象的定義在定義一個(gè)類時(shí),要注意如下幾點(diǎn):1、類具有封裝性,并且類只是定義了一種結(jié)構(gòu)(樣板),所以類中的任何成員數(shù)據(jù)均不能使用關(guān)鍵字extern,register限定其存儲(chǔ)類型。2、在定義類時(shí),只是定義了一種導(dǎo)出的數(shù)據(jù)類型,并不為類分配存儲(chǔ)空間,所以,在定義類中的數(shù)據(jù)成員時(shí),不能對(duì)其初始化。如:classTest
{
intx=5,y=6;//是不允許的
externfloatx; //是不允許的
}第十四頁,共三十二頁,2022年,8月28日2.2類的聲明和對(duì)象的定義對(duì)象只有在定義了屬于類的變量后,系統(tǒng)才會(huì)為類的變量分配空間。對(duì)象是類的實(shí)例,定義對(duì)象之前,一定要先說明該對(duì)象的類。類的變量我們稱之為對(duì)象。第十五頁,共三十二頁,2022年,8月28日2.2類的聲明和對(duì)象的定義不同對(duì)象占據(jù)內(nèi)存中的不同區(qū)域,它們所保存的數(shù)據(jù)各不相同,但對(duì)成員數(shù)據(jù)進(jìn)行操作的成員函數(shù)的程序代碼均是一樣的。對(duì)象的定義格式:類名對(duì)象名1,對(duì)象名2,…;
class類名對(duì)象名1,對(duì)象名2,…;例Studentst1,st2;類名對(duì)象名在建立對(duì)象時(shí),只為對(duì)象分配用于保存數(shù)據(jù)成員的內(nèi)存空間,而成員函數(shù)的代碼為該類的每一個(gè)對(duì)象所共享。第十六頁,共三十二頁,2022年,8月28日2.2類的聲明和對(duì)象的定義對(duì)象的定義方法同結(jié)構(gòu)體定義變量的方法一樣,也分三種,當(dāng)類中有數(shù)據(jù)成員的訪問權(quán)限為私有時(shí),不允許對(duì)對(duì)象進(jìn)行初始化。classA{floatx,y;public:voidSetxy(floata,floatb){x=a;y=b;}voidPrint(void){cout<<x<<‘\t’<<y<<endl;}}a1,a2;voidmain(void){Aa3,a4;}定義全局對(duì)象定義局部對(duì)象第十七頁,共三十二頁,2022年,8月28日2.2類的聲明和對(duì)象的定義對(duì)象的使用一個(gè)對(duì)象的成員就是該對(duì)象的類所定義的成員,有成員數(shù)據(jù)和成員函數(shù),引用時(shí)同結(jié)構(gòu)體變量類似,用“.”運(yùn)算符。第十八頁,共三十二頁,2022年,8月28日2.2類的聲明和對(duì)象的定義classA{floatx,y;public:floatm,n;voidSetxy(floata,floatb){x=a;y=b;}voidPrint(void){cout<<x<<‘\t’<<y<<endl;}};voidmain(void){Aa1,a2;//定義對(duì)象
a1.m=10;a1.n=20;//為公有成員數(shù)據(jù)賦值
a1.Setxy(2.0,5.0);//為私有成員數(shù)據(jù)賦值
a1.Print();}輸出:2 5第十九頁,共三十二頁,2022年,8月28日2.2類的聲明和對(duì)象的定義classA{floatx,y;public:floatm,n;voidSetxy(floata,floatb){x=a;y=b;}voidPrint(void){cout<<x<<‘\t’<<y<<endl;}};voidmain(void){Aa1,a2;a1.m=10;a1.n=20; //為公有成員數(shù)據(jù)賦值
a1.x=2;a1.y=5;a1.Setxy(2.0,5.0);a1.Print();}必須通過類內(nèi)公有函數(shù)訪問私有數(shù)據(jù)成員非法,私有成員不能在類外訪問第二十頁,共三十二頁,2022年,8月28日2.3類的成員函數(shù)成員函數(shù)的性質(zhì):與普通函數(shù)相同:返回值和函數(shù)類型;不同:屬于一個(gè)類的成員,出現(xiàn)在類體中。注意成員函數(shù)的權(quán)限(它能否被調(diào)用)、作用域(函數(shù)能使用什么范圍中的數(shù)據(jù)和函數(shù))。聲明為private的私有成員函數(shù)不能被類外界調(diào)用,為本類中其他成員函數(shù)提供服務(wù),是其他函數(shù)的工具函數(shù)。第二十一頁,共三十二頁,2022年,8月28日2.3類的成員函數(shù)在類外定義成員函數(shù):1.成員函數(shù)可以在類體中只聲明,在類體外進(jìn)行函數(shù)定義。2.類體外定義函數(shù)時(shí),函數(shù)名前加上類名和“::”(作用域限定符或作用域運(yùn)算符)。3.好處:減少類體的長度,使類體清晰,便于閱讀;把類的接口和實(shí)現(xiàn)細(xì)節(jié)相分離。第二十二頁,共三十二頁,2022年,8月28日2.3類的成員函數(shù)classStudent{ public: voiddisplay();//成員函數(shù)聲明 private: intnum; stringname; charsex;};voidStudent::display()//類體外成員函數(shù)定義{cout<<“num:”<<num<<endl; cout<<“name:”<<name<<endl; cout<<“sex:”<<sex<<endl;}Studentstud1,stud2;類名域運(yùn)算符第二十三頁,共三十二頁,2022年,8月28日2.3類的成員函數(shù)classA{floatx,y;public:
voidSetxy(floata,floatb){x=a;y=b;}voidPrint(void){cout<<x<<‘\t’<<y<<endl;}}; 在類體內(nèi)定義成員函數(shù)成員函數(shù)與成員數(shù)據(jù)的定義不分先后,可以先說明函數(shù)原型,再在類體外定義函數(shù)體。第二十四頁,共三十二頁,2022年,8月28日2.3類的成員函數(shù)classA{floatx,y;public:
voidSetxy(floata,floatb);
voidPrint(void);};
voidA::Setxy(floata,floatb){x=a;y=b;}voidA::Print(void){cout<<x<<‘\t’<<y<<endl;}在類體內(nèi)說明成員函數(shù)原型在類體外定義成員函數(shù)第二十五頁,共三十二頁,2022年,8月28日2.3類的成員函數(shù)在類體外定義成員函數(shù)的格式:<type><class_name>::<func_name>(<參數(shù)表>){......//函數(shù)體}voidA::Setxy(floata,floatb){x=a;y=b;}函數(shù)類型類名函數(shù)名形參列表函數(shù)體第二十六頁,共三十二頁,2022年,8月28日2.3類的成員函數(shù)內(nèi)聯(lián)成員函數(shù)當(dāng)我們定義一個(gè)類時(shí),可以在類中直接定義函數(shù)體。這時(shí)成員函數(shù)在編譯時(shí)是作為內(nèi)聯(lián)函數(shù)來實(shí)現(xiàn)的。同時(shí),我們也可以在類體外定義類的內(nèi)聯(lián)成員函數(shù),在類體內(nèi)說明函數(shù),在類體外定義時(shí),在成員函數(shù)的定義前面加上關(guān)鍵字inline。第二十七頁,共三十二頁,2022年,8月28日2.3類的成員函數(shù)classA{floatx,y;public:voidSetxy(floata,floatb);
voidPrint(void);};
inlinevoidA::Setxy(floata,floatb){x=a;y=b;}inlinevoidA::Print(void){cout<<x<<‘\t’<<y<<endl;}說明該成員函數(shù)為內(nèi)聯(lián)第二十八頁,共三十二頁,2022年,8月28日2.4對(duì)象成員的引用類的對(duì)象如何引用私有數(shù)據(jù)成員1、通過公有函數(shù)為私有成員賦值classTt{es intx,y;public:voidSetxy(inta,intb){x=a; y=b;}voidPrintxy(void){cout<<"x="<<x<<'\t'<<"y="<<y<<endl;}};voidmain(void){ Testp1,p2; p1.Setxy(3,5); p1.Printxy();}調(diào)用公有函數(shù)為私有對(duì)象賦值第二十九頁,共三十二頁,2022年,8月28日2.4對(duì)象成員的引用classTest{
intx,y;public:voidSetxy(inta,intb){x=a; y=b;}voidGetxy(int*px,int*py){*px=x;*py=y;}//提取x,y值
voidPrintxy(void){cout<<"
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/TS 21219-13:2025 EN Intelligent transport systems - Traffic and travel information via transport protocol experts group,generation 2 (TPEG2) - Part 13: Public transport
- 2025標(biāo)準(zhǔn)農(nóng)田建設(shè)合同管理的任務(wù)和方法
- 2025員工個(gè)人勞動(dòng)合同
- 2025年度房屋置換增值服務(wù)全新房屋置換對(duì)方房屋置換及增值合同3篇
- 2025農(nóng)村合作建房項(xiàng)目施工臨時(shí)用電安全合同2篇
- 二零二五年度公司股權(quán)轉(zhuǎn)讓及后續(xù)管理服務(wù)合同3篇
- 二零二五年度房地產(chǎn)項(xiàng)目合作合同解除協(xié)議2篇
- 二零二五年度農(nóng)產(chǎn)品批發(fā)市場租賃合作合同3篇
- 二零二五年度智能家居產(chǎn)品開發(fā)合作協(xié)議書3篇
- 二零二五年度辦公室租賃合同模板:含員工激勵(lì)及福利計(jì)劃3篇
- 部編人教版四年級(jí)數(shù)學(xué)上冊(cè)期末考試卷(可打印)
- 一例阿爾茨海默病患者的護(hù)理查房
- 農(nóng)貿(mào)市場安全生產(chǎn)工作方案
- 咸陽租房合同
- 《鋼筋保護(hù)層檢測》課件
- YJ-T 27-2024 應(yīng)急指揮通信保障能力建設(shè)規(guī)范
- 合伙人協(xié)議書決策機(jī)制
- 西藏畜牧獸醫(yī)知識(shí)培訓(xùn)課件
- 護(hù)理專業(yè)人才培養(yǎng)方案論證報(bào)告
- 我的家鄉(xiāng)武漢
- 眼鏡制造業(yè)灌膠機(jī)市場前景與機(jī)遇分析
評(píng)論
0/150
提交評(píng)論