ch2類和對象舉例.ppt_第1頁
ch2類和對象舉例.ppt_第2頁
ch2類和對象舉例.ppt_第3頁
ch2類和對象舉例.ppt_第4頁
ch2類和對象舉例.ppt_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第2章(1) 類與對象,C+語言程序設(shè)計,2,主要內(nèi)容與學(xué)習(xí)要求,重點: 1、掌握類的聲明方法與類的成員函數(shù)的實現(xiàn) 2、理解并正確定義類成員的訪問權(quán)限 3、掌握類的應(yīng)用:對象的聲明及使用,類的定義舉例,聲明時鐘類Clock,包含時間的Hour、Minute, Second ,以及設(shè)定時間SetTime()和顯示時間ShowTime()。,3,設(shè)計類的步驟:,1、問題分析:確定數(shù)據(jù)成員和成員函數(shù) 2、類的聲明:建立在頭文件中。 3、實現(xiàn)成員函數(shù):建立在與頭文件同名的.cpp文件中。 4、類和對象的使用:在main函數(shù)所在的.cpp文件中。,5,類的定義,類的定義包括類的聲明和成員函數(shù)的實現(xiàn) 。 class 類名稱 public: 公有成員(外部接口) protected: 保護型成員 private: 私有成員 ;,6,/類的定義實例(clock.h): class Clock public: void SetTime(int NewH,int NewM, int NewS); void ShowTime( ); private: int Hour, Minute, Second; ;,數(shù)據(jù)成員,函數(shù)成員,7,類成員函數(shù)的實現(xiàn),成員函數(shù)的2種實現(xiàn)方式: 在類內(nèi)實現(xiàn) 和 在類外實現(xiàn) 。 方法一: 常用類外 一般將成員函數(shù)的實現(xiàn)放在類的外面,函數(shù)名前用類名限定。如 void Clock:ShowTime() ,8,類外實現(xiàn)的成員函數(shù)的格式 【常用】 返回值類型 類名:成員函數(shù)名(參數(shù)表) 函數(shù)體 ,類的成員函數(shù)的實現(xiàn),/實例(clock.cpp):鐘表類的成員函數(shù)的實現(xiàn) void Clock:SetTime(int NewH, int NewM,int NewS) Hour=NewH; Minute=NewM; Second=NewS; void Clock:ShowTime() /顯示時間 coutHour“:“Minute“:“Secondendl; ,9,/提示:一般將成員函數(shù)的實現(xiàn)放在類的外面,函數(shù)名前用類名限定;并且單獨存放在擴展名為.cpp的文件中,主文件名與類的聲明文件同。,10,對象的定義與使用,定義類的目的是為了應(yīng)用該類定義對象。 類的對象是該類的某一特定實體,即“類” 類型的變量。 1、對象的聲明: 類名 對象名表; 例: Clock myClock; CPoint p1,p2;,11,2、對象成員的一般訪問方式,方法一:在類的外部只能直接對象訪問公有成員,采用成員運算符“.”實現(xiàn),格式: 對象名.成員名 比如, 設(shè)類Clock已經(jīng)定義。 void main() Clock myClock; myClock.SetTime(8,30,30); myClock.ShowTime(); 方法二:在類的內(nèi)部,可直接訪問數(shù)據(jù)成員,格式: 直接使用成員名 void Clock:SetTime( ) Hour = Minute= Second=0;,在VC+6定義和使用類的過程,1、建立vc+工程:win32 console application; 2、在工程中新建.h文件,寫入類的聲明; 3、在工程中新建與.h文件同名的.cpp文件,寫入成員函數(shù)的實現(xiàn); 4、在工程中新建.cpp文件,編寫main函數(shù),使用類和對象,進行程序測試; 5、運行和調(diào)試程序,聲明點類 CPoint , 包含: 坐標(biāo)X和Y,設(shè)置點的坐標(biāo)Init()和獲取點的橫坐標(biāo)和縱坐標(biāo)GetX()和GetY()三個函數(shù)。,14,CPoint類的實現(xiàn),class CPoint public: void Init(int X0,int Y0); int GetX(); int GetY(); private: int X,Y; ;,void CPoint:Init(int X0,int Y0) X=X0; Y=Y0; int CPoint:GetX() return X; int CPoint:GetY() return Y; ,15,CPoint的使用,void main() CPoint p1; p1.Init(10,20); /設(shè)置p1點 cout(p1.GetX()”,” p1.GetY()endl; /輸出點坐標(biāo) ,17,實例:對象的定義與使用,題目要求:定義一個復(fù)數(shù)類型,包含實部和虛部,能對該類型的對象賦初值、求實部、求虛部、求復(fù)數(shù)的絕對值。 問題分析: (1)數(shù)據(jù)成員和函數(shù)成員 (2)確定成員的訪問屬性: 將數(shù)據(jù)成員聲明為私有的,可以阻止外界對他們的隨意訪問,只有該類中的成員函數(shù)才能訪問。 將成員函數(shù)聲明為公有的,他們便是外界訪問類中數(shù)據(jù)的接口。,18,/類的聲明 complex.h #include using namespace std; class CComplex public: /成員函數(shù) void init(double r, double i) /賦初值 double realcomplex( ) /求實部 double imagcomplex( ) /求虛部 double abscomplex( ) /求復(fù)數(shù)的絕對值 private: /數(shù)據(jù)成員 double m_real; double m_imag; ;,19,/類的成員函數(shù)的實現(xiàn)complex.cpp void CComplex :init(double r, double i) /賦初值 m_real=r ; m_imag=i; double CComplex : realcomplex( ) /求實部 return m_real; double CComplex : imagcomplex( ) /求虛部 return m_imag; double CComplex : abscomplex( ) /求復(fù)數(shù)的絕對值 double t; t = m_real*m_real + m_imag*m_imag; return sqrt(t); ,20,/編寫公共函數(shù),調(diào)用復(fù)數(shù)類 void main( ) CComplex A; A.init(1.5 , 9.7); /初始化對象A cout“real of complex A =“ A.realcomplex( ) endl; cout“imag of complex A =“ A.imagcomplex( ) endl; cout“abs of complex A =“ A.abscomplex( ) endl; ,運行結(jié)果: real of complex A =1.5 imag of complex A =9.7 abs of complex A =9.81529,21,3、通過指向?qū)ο蟮闹羔樤L問對象成員對象指針,與結(jié)構(gòu)體類似,通過指向?qū)ο蟮闹羔樅汀?”成員運算符可訪問對象的成員。比如: void main() CPoint p1,*p2; p1.Init(10,20); /設(shè)置p1點 p2= /輸出點坐標(biāo) ,22,4、this指針,指向當(dāng)前對象的指針,當(dāng)需要在類的成員函數(shù)中取得當(dāng)前對象時使用。 比如,在CPoint類中增加一個成員函數(shù),實現(xiàn):將當(dāng)前點的坐標(biāo)各加1,返回原來的點。,函數(shù)定義(類內(nèi)): Point Add_1( ) Point old=*this; X+; Y+; return old; ,void main() /調(diào)用 Point p1,p2; p1.Init(10,20); /設(shè)置p1點 p2=p1.Add_1( ); coutp1.GetX(),p1.GetY( )endl; coutp2.GetX(),p2.GetY( ) endl; ,23,問題:定義類時,如何確定公有成員和私有成員?,方法: 根據(jù)實際需要而定。 數(shù)據(jù)成員一般定義為私有的(為了實現(xiàn)數(shù)據(jù)隱藏) 供外界訪問的接口函數(shù)應(yīng)定義為公有的,一個只供類中的成員函數(shù)調(diào)用的成員函數(shù)應(yīng)當(dāng)定義為私有的。 例如:有一個學(xué)生成績類,其屬性有學(xué)號、姓名、5門課的成績、平均成績;其成員函數(shù)有輸入一個學(xué)

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論