理解C++中的類和對象_第1頁
理解C++中的類和對象_第2頁
理解C++中的類和對象_第3頁
理解C++中的類和對象_第4頁
理解C++中的類和對象_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

類和對象《C++程序設(shè)計》課程主講:史永哲學習內(nèi)容一、類和對象的概念二、類和對象的定義三、類和對象的使用四、總結(jié)1、面向?qū)ο竺嫦驅(qū)ο螅∣O:OrientedObject)是軟件行業(yè)的新術(shù)語,它是為了解決70年代的“軟件危機”而出現(xiàn)的新的軟件開發(fā)方法。面向?qū)ο笫侵敢环N程序設(shè)計范型,同時也是一種程序開發(fā)的方法。它將對象作為程序的基本單元,將程序和數(shù)據(jù)封裝其中,以提高軟件的重用性、靈活性和擴展性。

一、類和對象的概念面向過程:強調(diào)處理問題的過程。開始順序,階段結(jié)束面向?qū)ο螅豪脤ο箝g的消息傳遞來驅(qū)動程序的執(zhí)行。對象0對象1對象2對象3對象5對象4優(yōu)點:真實表現(xiàn)客觀世界,對象間的關(guān)系清晰,對象間的消息處理高效。不足之處:復(fù)用性較差,無法真實描繪客觀世界。一、類和對象的概念一、類和對象的概念2、類和對象的定義:對象是對問題域中客觀存在的事物的抽象,它是一組屬性和這些屬性上的操作的封裝體。

類是具有相同屬性和操作的一組對象的統(tǒng)一抽象的描述。類是對象的模板,對象是類的實體。

一、類和對象的概念

對象=數(shù)據(jù)+數(shù)據(jù)上的操作 程序=(對象+對象+對象+…)+消息

消息:面向?qū)ο笾?,我們稱一個對象對另一個對象施加的操作為消息(message)。如:對汽車對象,點火、換檔、踩油門、踩剎車等,這些施加操作的過程,稱為發(fā)送消息。

對象具有抽象性、封裝性、繼承性、多態(tài)性四個特點。一、類和對象的概念(1)對象的抽象性

抽象是從眾多的事物中抽取出共同的、本質(zhì)性的特征,而舍棄其非本質(zhì)的特征。程序設(shè)計中對象的抽象有兩方面,一是對數(shù)據(jù)的抽象,即是對象本身屬性的抽象。二是過程的抽象,即是對象本身行為的抽象。一、類和對象的概念(2)對象的封裝性封裝有兩個含義:一是把對象的全部屬性和操作結(jié)合在一起,形成一個不可分割的整體對象,二是信息隱藏,即這個整體對外盡量隱藏它的細節(jié),只公布一個有限界面,通過這個界面和其它對象交互。一、類和對象的概念(3)對象的繼承性特殊類的對象獲得一般類的全部屬性與操作,稱做特殊類對一般類的繼承。被繼承的類叫父類或基類,繼承父類的類叫子類或派生類。

一、類和對象的概念(4)對象的多態(tài)性對象的多態(tài)性指基類中定義的屬性或操作被派生類繼承后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。一、類和對象的概念例:圓形(circle)的數(shù)據(jù)抽象: intx,y; doubler; 行為抽象: setx();sety();setr();draw();classcircle{private:

intx,y;doubler;public:voidsetx(intm){x=m;}voidsety(intn){y=n;}

voidsetr(intk){y=k;}

voiddraw(){…….}

}

抽象一、類和對象的概念二、類和對象的定義

1、類定義形式:class類名{ private:

私有類成員;

public:

公有類成員;

protected:

保護類成員;};數(shù)據(jù)區(qū)代碼區(qū)對象1二、類和對象的定義例2.1定義一個類classsample{privateintx;public: voidfun()

{......;

}};二、類和對象的定義例2.2定義一個類(類外實現(xiàn)成員函數(shù))classsample{privateintx;public: voidfun();};/*類外成員函數(shù)的實現(xiàn)*/voidsample::fun(){......;}二、類和對象的定義類外函數(shù)實現(xiàn)的格式為:函數(shù)類型類名::函數(shù)名(參數(shù)表)

{

語句組

;}其中,運算符“::”稱為作用域分辨符,它指出“函數(shù)名”是屬于“類名”的成員函數(shù)。二、類和對象的定義方法1:classA{public: intr,t;};Ax,y;方法2:classB{ intI,j;public: voidSetdata(inta,intb) { I=a;j=b;} voidprint(void) {cout<<I<<‘\t’<<j<<‘\n’;}}b1,b2;二、類和對象的定義2、定義對象:3、類中的構(gòu)造函數(shù):①構(gòu)造函數(shù)是類的成員函數(shù),在類內(nèi)聲明,可以在類體內(nèi)或類體外實現(xiàn)。②構(gòu)造函數(shù)名與類名相同。③構(gòu)造函數(shù)無返回值。④構(gòu)造函數(shù)在創(chuàng)建對象時,自動調(diào)用,不需要程序員寫代碼顯式調(diào)用。二、類和對象的定義例:2.3#include<iostream.h>

classtest{public:

test(){cout<<"counstructorcalled\n";}};testobj1;voidmain(){testobj1;}輸出結(jié)果為:counstructorcalled二、類和對象的定義構(gòu)造函數(shù)的重載:例:2.4#include<iostream.h>

classtest{public:

test(){cout<<"counstructorcalled\n";}test(char*name){cout<<"counstructorcalledname="<<name;}};testobj1;voidmain(){testobj1;textobj2("李平");}輸出結(jié)果為:counstructorcalledconustructorcalledname=李平二、類和對象的定義4、類中的析構(gòu)函數(shù)①析構(gòu)函數(shù)名為“~<類名>”。如,Calendar類的析構(gòu)函數(shù)名為~Calendar。②沒有參數(shù)和返回值。③析構(gòu)函數(shù)不能重載。④當對象消亡時,系統(tǒng)回收該對象所占用的內(nèi)存空間前,析構(gòu)函數(shù)會被自動調(diào)用。

二、類和對象的定義例:classBox{

public:

~Box(){cout>>"distroytheobject"}

private:

intwidth,length,depth;};intmain(){Boxb;

deleteb;}輸出:distroytheobject二、類和對象的定義5、類使用的幾點說明:(1)在類的外部,只能訪問類的公有成員,而不能訪問類的私有成員或保護成員。若要訪問類對象的私有成員,只能通過對象的公有成員函數(shù)來獲取。(2)

同類型的對象之間可以整體賦值,例如:rr=r,將對象r的所有成員依次賦給對象rr的成員,這種賦值與對象的成員訪問權(quán)限無關(guān)。(3)對象用作函數(shù)的參數(shù)時,屬于賦值調(diào)用;函數(shù)也可以返回一個對象。二、類和對象的定義應(yīng)用://類rectangle的定義classrectangle{private:floatwidth,height;public:voidsetwidth(floatx){width=x;}voidsetheight(floaty){height=y;}三、類和對象的使用floatarea(){returnwidth*height;}floatperimeter(){return2*(width+height);}};staticvoidmain(){rectanglerect;rect.setwidth(45);//設(shè)置rectangle的寬度三、類和對象的使用rect.setheight(54.2);//設(shè)置rectangle的高度cout<<"theareaofrectangleis"<<rect.area()<<endl;//輸出矩形面積cout<<"theperimeterofrectangleis"<<rect.perimeter()<<endl;//輸出矩形周長}輸出結(jié)

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論