面向?qū)ο蟮谖逯v_第1頁(yè)
面向?qū)ο蟮谖逯v_第2頁(yè)
面向?qū)ο蟮谖逯v_第3頁(yè)
面向?qū)ο蟮谖逯v_第4頁(yè)
面向?qū)ο蟮谖逯v_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第 6章 類與對(duì)象6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成員6.4 友員 friend6.5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7 應(yīng)用舉例6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用 第五講 類與對(duì)象第 6章 類與對(duì)象6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成員6.4 友員 friend6.5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7 應(yīng)用舉例6.1 類定義與對(duì)象聲明為什么定義類 把現(xiàn)實(shí)世界的事物歸納成類,以貼近自然的方式描述現(xiàn)實(shí)系統(tǒng)類的組成 類名、數(shù)據(jù)成員(屬性、data member)、成員函數(shù)(服務(wù)、member function)第 6章 類與對(duì)象6.1

2、類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成員6.4 友員 friend6.5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7 應(yīng)用舉例類的定義 class className /以關(guān)鍵字class 開頭 public: /類的公有成員 data members; /公有數(shù)據(jù)成員 member functions; /公有成員函數(shù) protected: /類的保護(hù)成員 data members; /保護(hù)數(shù)據(jù)成員 member functions; /保護(hù)成員函數(shù) private: /類的私有成員 data members; /私有數(shù)據(jù)成員 member functions; /私有成員函數(shù); /以

3、括號(hào)及分號(hào)結(jié)束,體現(xiàn)封裝缺省時(shí)為私有成員(private)第 6章 類與對(duì)象6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成員6.4 友員 friend6.5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7 應(yīng)用舉例例1:定義并實(shí)現(xiàn)類 student#includeclass student /定義類 public: /類的公有成員 void input(float s) score=s; void modify(float s) score=s; void display( ) cout n score: score; private: /類私有成員 float score;void mai

4、n( ) /主函數(shù) student ss; /聲明對(duì)象 ss.input(88.5); /調(diào)用成員函數(shù) ss.display( ); 第 6章 類與對(duì)象6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成員6.4 友員 friend6.5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7 應(yīng)用舉例問題 類的定義和實(shí)現(xiàn)放在一起好不好?結(jié)論 不好!方法 類的定義放在 student.h 類的實(shí)現(xiàn)放在 student.cpp優(yōu)點(diǎn) 1。把類的定義與實(shí)現(xiàn)分離開來(lái), 便于文擋管理、維護(hù)。 2??蓪㈩惖膶?shí)現(xiàn)隱蔽起來(lái),使軟 件開發(fā)商能獨(dú)立開發(fā)軟件。 3。便于團(tuán)體式的大型軟件開發(fā)。第 6章 類與對(duì)象6.1 類定義與對(duì)

5、象聲明6.2 對(duì)象的使用6.3 對(duì)象成員6.4 友員 friend6.5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7 應(yīng)用舉例例2:文件 student.h#ifndef STUDENT_H /條件編譯#define STUDENT_Hclass student /定義類 public: /類的公有成員 void input(int n, char *na, float s); void modify(float s); void display( ); private: /類私有成員 int number; /學(xué)號(hào) char *name; /姓名 float score; /成績(jī);#endif第

6、 6章 類與對(duì)象6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成員6.4 友員 friend6.5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7 應(yīng)用舉例例2:文件 student.cpp#include#include student.h /必須包含類的定義void student:input(int n, char *na, float s) number=n; score=s; name=new charstrlen(na) + 1; strcpy(name, na); void student:modify(float s) score=s;void student:display(

7、 ) cout n number: number; cout n name: name; cout n score: score; 第 6章 類與對(duì)象6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成員6.4 友員 friend6.5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7 應(yīng)用舉例例2:文件 main.cpp #include student.h /要包含類student的定義void main( ) /主函數(shù) student ss; /聲明對(duì)象 char na= WANG QIAN ; ss.input(9901, na, 88.5); /調(diào)用成員函數(shù) ss.display( );

8、結(jié)果: number: 9901 name: WANG QIAN score: 88.5注意:函數(shù)input的作用為初始化。第 6章 類與對(duì)象6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成員6.4 友員 friend6.5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7 應(yīng)用舉例例 2 總 結(jié)1。有三個(gè)文件: student.h (類的頭文件) student.cpp (類的實(shí)現(xiàn)文件) main.cpp (主文件,即應(yīng)用程序) 2。類的成員函數(shù)實(shí)現(xiàn)方法是用 : 引導(dǎo)。 如: void student:display( ) 4。在Microsoft Visual C+開發(fā)環(huán)境中的具體應(yīng)用(實(shí)驗(yàn)

9、課內(nèi)容)3。在頭文件中應(yīng)加入條件編譯,以免多次包含, 如:#ifndef STUDENT_H .第 6章 類與對(duì)象6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成員6.4 友員 friend6.5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7 應(yīng)用舉例對(duì)象的聲明例3: 對(duì)象的聲明及成員函數(shù)調(diào)用#include student.h void main( ) student s2; s2.input(9902, Li ,90); s2.display( ); /公用成員函數(shù) s2.modify(95); /公用成員函數(shù) s2.display( ); 結(jié)果: number: 9902 name:

10、Li score: 90 number: 9902 name: Li score: 95第 6章 類與對(duì)象6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成員6.4 友員 friend6.5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7 應(yīng)用舉例構(gòu)造函數(shù)與析構(gòu)函數(shù)構(gòu)造函數(shù) 創(chuàng)建并初始化類的數(shù)據(jù)成員析構(gòu)函數(shù) 削除對(duì)象,釋放內(nèi)存?;叵胍幌伦兞亢秃瘮?shù)參數(shù)的初始化變量 定義與賦值結(jié)合起來(lái): int number=9902; 函數(shù) 應(yīng)用缺省參數(shù): void add(int a=0, int b=0);目的 便于編程、保證變量的值不會(huì)無(wú) 意義,減小程序出錯(cuò)的可能性。第 6章 類與對(duì)象6.1 類定義與對(duì)象聲

11、明6.2 對(duì)象的使用6.3 對(duì)象成員6.4 友員 friend6.5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7 應(yīng)用舉例構(gòu)造函數(shù)的定義 類名(參數(shù)表);析構(gòu)函數(shù)的定義 類名( );注意:沒有input函數(shù)文件student.h 改為class student public: student( ); /缺省構(gòu)造函數(shù) student(int n, char *na, floar s); /構(gòu)造函數(shù) student( ); /析構(gòu)函數(shù) void modify(float s); void display( ); private: int number; char *name; float score;

12、 ;第 6章 類與對(duì)象6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成員6.4 友員 friend6.5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7 應(yīng)用舉例構(gòu)造函數(shù)的特點(diǎn):1. 與類同名.2. 沒有返回值.3. 可以定義多個(gè)構(gòu)造函數(shù).4. 在創(chuàng)建對(duì)象時(shí)被自動(dòng)調(diào)用.構(gòu)造函數(shù)應(yīng)用注意點(diǎn):1. 若自己不定義構(gòu)造函數(shù),編譯程序提供 一個(gè)缺省構(gòu)造函數(shù)2. 若程序用到指針, 則應(yīng)自定義構(gòu)造函數(shù), 以減少程序出錯(cuò)機(jī)會(huì).3. 構(gòu)造函數(shù)和析構(gòu)函數(shù)應(yīng)成對(duì)定義,以養(yǎng) 成良好的編程習(xí)慣.第 6章 類與對(duì)象6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成員6.4 友員 friend6.5 靜態(tài)成員和對(duì)象組

13、 織6.6 模板6.7 應(yīng)用舉例例2(續(xù)) 文件 student.cpp 加上:student:student( ) number=0; score=0; name= ; student:student(int n, char *na, float s) number=n; score = s; name=new charstrlen(na)+1; strcpy(name, na); student:student( ) delete name; 第 6章 類與對(duì)象6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成員6.4 友員 friend6.5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7

14、 應(yīng)用舉例 文件main.cpp變?yōu)?include student.h void main( ) student s1;/用缺省構(gòu)造函數(shù)初始化 student s2(9902, “Li ”,90); /創(chuàng)建時(shí)用 /帶參數(shù)構(gòu)造函數(shù)初始化 s2.display( ); /公用成員函數(shù) s2.modify(95); /公用成員函數(shù) s2.display( ); 結(jié)果: number: 9902 name: Li score: 90 number: 9902 name: Li score: 95第 6章 類與對(duì)象6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成員6.4 友員 friend6.

15、5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7 應(yīng)用舉例拷貝構(gòu)造函數(shù)和賦值構(gòu)造函數(shù)問題的提出 聲明創(chuàng)建對(duì)象時(shí),把一已 知的對(duì)象初始化該對(duì)象即想做到: student s1(9901,”XU”,88);student s2=s1; /即為 賦值構(gòu)造函數(shù)student s3(s1); /即為 拷貝構(gòu)造函數(shù)目的 使編程更為簡(jiǎn)便、有效、實(shí)用。第 6章 類與對(duì)象6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成員6.4 友員 friend6.5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7 應(yīng)用舉例例3:平面點(diǎn)類 point/save as point.hclass point public: /公有成員

16、point( ); /缺省構(gòu)造函數(shù) point(float x1, float y1);/帶參數(shù)構(gòu)造函數(shù) point( const point &p); /拷貝構(gòu)造函數(shù) void show( ); /打印顯示點(diǎn) void move(float x1, float y1); /移動(dòng)點(diǎn) private: /私有成員 float x; /點(diǎn)的橫坐標(biāo) float y; /點(diǎn)的縱坐標(biāo); /類定義結(jié)束 第 6章 類與對(duì)象6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成員6.4 友員 friend6.5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7 應(yīng)用舉例/save as point.cpp#inclu

17、de point.h point:point( ) x=0; y=0; /缺省構(gòu)造函數(shù)point:point(float x1, float y1)/參數(shù)構(gòu)造函數(shù)x=x1; y=y1;point:point(const point &p) /拷貝構(gòu)造函數(shù) x=p.x; y=p.y; void point:show( ) cout Point(x,y)=( x , y ) endl; /顯示點(diǎn)void point:move(float x1, float y1)/移動(dòng)點(diǎn) x=x+x1; y=y+y1;第 6章 類與對(duì)象6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成員6.4 友員 fri

18、end6.5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7 應(yīng)用舉例/save as main.cpp#include point.hvoid main( ) point p1; /調(diào)用缺省構(gòu)造函數(shù), x=0, y=0 point p2(2, 2); /調(diào)用參數(shù)構(gòu)造函數(shù) point p3(p2); /調(diào)用拷貝構(gòu)造函數(shù) p1.move(5,5); p1.show( ); p2.show( ); p3.show( ); 結(jié)果:Point(x,y)=(5,5) Point(x,y)=(2,2) Point(x,y)=(2,2)第 6章 類與對(duì)象6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成員6.

19、4 友員 friend6.5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7 應(yīng)用舉例類中常量和引用的初始化:初始化表問題的提出 類中的變量及對(duì)象的初始 化已學(xué),如何初始化常量 和引用?方法 應(yīng)用初始化表,注意在類定義中不能直接用:class student private: float score; float &rs=score; / 錯(cuò)! const float total=100;/ 錯(cuò)??;第 6章 類與對(duì)象6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成員6.4 友員 friend6.5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7 應(yīng)用舉例例4:應(yīng)用初始化表來(lái)初始化常量和引用#inclu

20、declass initi_data private: int x; int ℞ const float pi; public: initi_data(int x1):rx(x),pi(3.14) x=x1; void display ( ) cout x= x , rx= rx , pi= pi display( ); /直接訪問display(*ps).display( ) /間接訪問display結(jié)果: number: 9904 name: Li Hua score: 98 number: 9903 name: Ma Tao score: 90 number: 9903 name:

21、Ma Tao score: 90第 6章 類與對(duì)象6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成員6.4 友員 friend6.5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7 應(yīng)用舉例數(shù)據(jù)成員和成員函數(shù)引用規(guī)則1. 公有成員函數(shù)可由外部任意調(diào)用。 公有數(shù)據(jù)成員可由外部任意調(diào)用、修改2. 保護(hù)成員函數(shù)可由繼承類和友員調(diào)用。 保護(hù)數(shù)據(jù)成員可由繼承類和友員調(diào)用 修改. 體現(xiàn)了繼承的概念.3. 私有成員函數(shù)僅可在類的體內(nèi)和友員調(diào)用。 私有數(shù)據(jù)成員僅可由類的體內(nèi)函數(shù)和友員 調(diào)用修改, 起到了保護(hù)作用, 體現(xiàn)了封裝的 概念.第 6章 類與對(duì)象6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成員

22、6.4 友員 friend6.5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7 應(yīng)用舉例在例2中,若在應(yīng)用程序 (main.cpp)中有:cout s2.score; / 錯(cuò), 外部不能訪問私有 / 數(shù)據(jù)cout s2.number / 錯(cuò), 外部不能訪問私有 / 數(shù)據(jù)s2.score=98; /錯(cuò), 外部不能修改私有數(shù)據(jù)但體內(nèi)函數(shù)可以調(diào)用修改, 如void student:modify(float s) score=s;void student:display( ) cout n number: number; cout n name: name; cout n score: score; 類的封裝體現(xiàn)第 6章 類與對(duì)象6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成員6.4 友員 friend6.5 靜態(tài)成員和對(duì)象組 織6.6 模板6.7 應(yīng)用舉例This 指針什么是 This 指針 指向?qū)ο笞约旱闹羔?。是高?jí)編程有力的工具,目前僅作一般了解作用 運(yùn)算符重載,函數(shù)成員嵌套調(diào)用注意點(diǎn) 不必關(guān)心This 指針的創(chuàng)建和刪除 由編譯程序控制第 6章 類與對(duì)象6.1 類定義與對(duì)象聲明6.2 對(duì)象的使用6.3 對(duì)象成

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論