02_C++課件_類(lèi)與對(duì)象-類(lèi)定義.ppt_第1頁(yè)
02_C++課件_類(lèi)與對(duì)象-類(lèi)定義.ppt_第2頁(yè)
02_C++課件_類(lèi)與對(duì)象-類(lèi)定義.ppt_第3頁(yè)
02_C++課件_類(lèi)與對(duì)象-類(lèi)定義.ppt_第4頁(yè)
02_C++課件_類(lèi)與對(duì)象-類(lèi)定義.ppt_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1,第二講 類(lèi)與對(duì)象類(lèi)定義,類(lèi)的概念 類(lèi)與結(jié)構(gòu)體 類(lèi)的定義 訪(fǎng)問(wèn)權(quán)限 內(nèi)聯(lián)函數(shù),2,課堂練習(xí),定義時(shí)鐘結(jié)構(gòu)體 定義兩個(gè)函數(shù)實(shí)現(xiàn)時(shí)間設(shè)置和時(shí)間輸出功能(要求形參是引用類(lèi)型) 在主函數(shù)中調(diào)用兩個(gè)函數(shù),3,是面向?qū)ο缶幊痰某绦蚧締挝唬嫦蜻^(guò)程呢?) 類(lèi)是數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)的封裝(想想結(jié)構(gòu)體) 類(lèi)的對(duì)象使用自己的方法完成對(duì)數(shù)據(jù)的操作 類(lèi)可以隱藏?cái)?shù)據(jù)和操作細(xì)節(jié),何為類(lèi)?,4,struct Time int hour; / 0-23 int minute; / 0-59 int second; / 0-59 ;,結(jié)構(gòu)類(lèi),5,#include struct Time int hour; int minu

2、te; int sec; ;,int main( ) Time t1; cint1.hourt1.minute t1.sec; coutt2.hourt2.minutet2.sec; coutt2.hour:t2.minute :t2.secendl; return 0; ,setTime(t1);,setTime(t2);,showTime( t1 );,showTime( t2 );,void setTime(Time,void showTime(Time,結(jié)構(gòu)類(lèi),6,#include struct Time int hour; int minute; int sec; ; void se

3、tTime(Time ,int main( ) Time t1; setTime(t1); showTime(t1); Time t2; setTime(t2); showTime(t2); return 0; ,結(jié)構(gòu)類(lèi),7,1.1 類(lèi),class Time private : 關(guān)于時(shí)間的數(shù)據(jù); public : 讀取時(shí)間值 ; 調(diào)整時(shí)間值 ; ;,類(lèi)是數(shù)據(jù)和 操作數(shù)據(jù)的函數(shù)的封裝,結(jié)構(gòu)類(lèi),8,class Time private : int hour; int minute; int second; ;,public : void set(int,int,int); void get( );

4、,對(duì)象使用自己的方法 對(duì)數(shù)據(jù)操作,結(jié)構(gòu)類(lèi),9,#include class Time public: void setTime( ); void showTime( ); private: int hour; int minute; int sec; ;,int main( ) Time t1; t1.setTime( ); t1.showTime( ); Time t2; t2.setTime( ); t2.showTime( ); return 0; ,改用含成員函數(shù)的類(lèi)來(lái)處理,10,void Time:set_time( ) cinhour; cinminute; cinsec; voi

5、d Time:show_time( ) couthour : minute : secendl; ,class Time public: void setTime( ) cinhourminutesec; void show_time( ) couthour: minute: secendl; private: int hour; int minute; int sec; ;,改用含成員函數(shù)的類(lèi)來(lái)處理,課堂練習(xí):setTime()加上時(shí)間有效性檢驗(yàn),11,在主函數(shù)中調(diào)用兩個(gè)成員函數(shù)時(shí),應(yīng)指明對(duì)象名(t1,t2)。表示調(diào)用的是哪一個(gè)對(duì)象的成員函數(shù)。 2. 在類(lèi)外定義函數(shù)時(shí),應(yīng)指明函數(shù)的作用域(如

6、void Timeset_time( )。在成員函數(shù)引用本對(duì)象的數(shù)據(jù)成員時(shí),只需直接寫(xiě)數(shù)據(jù)成員名,這時(shí)C+系統(tǒng)會(huì)把它默認(rèn)為本對(duì)象的數(shù)據(jù)成員。也可以顯式地寫(xiě)出類(lèi)名并使用域運(yùn)算符。 3. 應(yīng)注意區(qū)分什么場(chǎng)合用域運(yùn)算符“”,什么場(chǎng)合用成員運(yùn)算符“.”,不要搞混。,注意,12,類(lèi)的聲明,面向?qū)ο缶幊痰幕A(chǔ)是把自己的數(shù)據(jù)類(lèi)型定義為類(lèi),類(lèi)是用戶(hù)定義的數(shù)據(jù)類(lèi)型。 定義一個(gè)類(lèi)后,就可以用類(lèi)名聲明類(lèi)類(lèi)型的變量,即將類(lèi)實(shí)例化為不同的對(duì)象; C+中用關(guān)鍵字class定義包含數(shù)據(jù)成員和成員函數(shù)的類(lèi)型。類(lèi)使程序員可以構(gòu)造對(duì)象的屬性和行為或操作。,13,聲明類(lèi)類(lèi)型,類(lèi)是一種用戶(hù)自定義的數(shù)據(jù)類(lèi)型,它的一般定義格式如下: c

7、lass 類(lèi)名 private: 私有數(shù)據(jù)成員和成員函數(shù); protected: 保護(hù)數(shù)據(jù)成員和成員函數(shù); public: 公有數(shù)據(jù)成員和成員函數(shù); ; 各個(gè)成員函數(shù)的實(shí)現(xiàn);(類(lèi)外或類(lèi)內(nèi)) *數(shù)據(jù)成員不能有初值;,14,訪(fǎng)問(wèn)控制,成員訪(fǎng)問(wèn)說(shuō)明符 公有 public: 說(shuō)明為公有的成員可以被程序中的任何代碼訪(fǎng)問(wèn); 私有 private: 說(shuō)明為私有的成員只能被類(lèi)本身的成員函數(shù)及友元 類(lèi)成員函數(shù)或友元函數(shù)訪(fǎng)問(wèn),默認(rèn)類(lèi)的對(duì)象的成員是私有; 保護(hù) protected: 除了類(lèi)本身的成員函數(shù)和說(shuō)明為友元函數(shù)或友元類(lèi)的成員函數(shù)可以訪(fǎng)問(wèn)保護(hù)成員外,該類(lèi)的派生類(lèi)的成員也可以訪(fǎng)問(wèn)。,15,訪(fǎng)問(wèn)控制,privat

8、e聲明的數(shù)據(jù)和函數(shù)不能在類(lèi)以外訪(fǎng)問(wèn) public聲明的數(shù)據(jù)和函數(shù)可以在類(lèi)以外訪(fǎng)問(wèn) 默認(rèn)為private訪(fǎng)問(wèn)類(lèi)型的,類(lèi),數(shù)據(jù)和函數(shù),私有,公有,無(wú)法從類(lèi)的外部訪(fǎng)問(wèn),可以從類(lèi)的外部訪(fǎng)問(wèn),數(shù)據(jù)和函數(shù),16,成員函數(shù),成員函數(shù)為描述對(duì)象的方法 一般定義為公用的 類(lèi)定義中的成員函數(shù)被默認(rèn)創(chuàng)建為內(nèi)聯(lián)函數(shù) 可在類(lèi)的外部定義成員函數(shù) 如果成員函數(shù)在類(lèi)體外定義,可以用關(guān)鍵字inline聲明為內(nèi)聯(lián)函數(shù)。,在類(lèi)的外部定義成員函數(shù)的語(yǔ)法: 返回類(lèi)型 類(lèi)名:成員函數(shù)名(參數(shù)列表) 函數(shù)定義體 ,雙冒號(hào)稱(chēng)為域名解析分解符,17,內(nèi)聯(lián)函數(shù),使用原因: 提高效率 使用方式: inline 前綴,類(lèi)內(nèi)部函數(shù)實(shí)現(xiàn)缺省為內(nèi)聯(lián)函數(shù)。

9、 工作原理: 函數(shù)代碼擴(kuò)展嵌入到調(diào)用處,并非調(diào)用,為編譯指令,代碼容量增大(一般是小函數(shù)),但減少調(diào)用的系統(tǒng)開(kāi)銷(xiāo);程序運(yùn)行速度快。 使用限制: 與編譯器有關(guān) (1)不能包括循環(huán)分支轉(zhuǎn)移語(yǔ)句。 (2)不能遞歸。 (3)不能包含static語(yǔ)句。 存取函數(shù)通常被定義為內(nèi)聯(lián)函數(shù),18,class Tdate private: int month; int day; int year; public: void set(int m, int d, int y ) ; int isLeapYear( ); void Print(); ;,代碼模擬:聲明日期類(lèi),類(lèi)由成員構(gòu)成: 數(shù)據(jù)成員描述對(duì)象的屬性 成員

10、函數(shù)描述對(duì)象的方法,19,class Tdate public: void set(int m, int d, int y ) ; int IsLeapYear(); void Print( ); private: int month; int day;int year; ; void Tdate:Set(int m, int d, int y ) month = m ; day = d ; year = y ; int Tdate: isLeapYear() return ( year%4 = 0 ,類(lèi)的聲明,類(lèi)的實(shí)現(xiàn),在類(lèi)外定義 成員函數(shù),20,class Tdate public: vo

11、id set(int m, int d, int y ) month = m ; day = d ; year = y ; int isLeapYear() return ( year%4 = 0 ,代碼模擬:聲明日期類(lèi),類(lèi)中定義成員函數(shù) 內(nèi)聯(lián)函數(shù)處理,21,代碼練習(xí),定義一個(gè)student類(lèi),每個(gè)學(xué)生包含name, sex, number, score屬性,并且實(shí)現(xiàn)顯示和設(shè)置這些屬性的成員函數(shù)。 要求:用到inline關(guān)鍵字,22,總結(jié),類(lèi)的概念 類(lèi)與一般結(jié)構(gòu)體的區(qū)別 類(lèi)的設(shè)計(jì) 訪(fǎng)問(wèn)權(quán)限問(wèn)題 內(nèi)聯(lián)函數(shù),23,課后作業(yè),1.類(lèi)中數(shù)據(jù)成員和成員函數(shù)有何區(qū)別? 2 類(lèi)的訪(fǎng)問(wèn)權(quán)限有哪些? 并區(qū)別之.

12、 3關(guān)于類(lèi)定義格式的描述中,判斷對(duì)錯(cuò). A.一般類(lèi)中包含有數(shù)據(jù)成員和成員函數(shù). B.一般類(lèi)的定義格式分為說(shuō)明部分和實(shí)現(xiàn)部分. C.類(lèi)中成員有三種訪(fǎng)問(wèn)方式:公有,私有和保護(hù). D.成員函數(shù)都應(yīng)是公有的,數(shù)據(jù)成員都應(yīng)是私有的. 4關(guān)于類(lèi)的成員函數(shù)描述中,判斷對(duì)錯(cuò). A.類(lèi)中可以有一個(gè)和多個(gè)函數(shù), B成員函數(shù)只能定義在類(lèi)體外 C.定義在類(lèi)體外的成員函數(shù)前加inline可以成為內(nèi)聯(lián)函數(shù). D.在類(lèi)外定義成員函數(shù)時(shí),在函數(shù)名前除了加類(lèi)型說(shuō)明符外,還需用作用域符號(hào)來(lái)限定改成員函數(shù)所屬的類(lèi).,24,課后作業(yè),5. 下面是Time類(lèi)的定義部分,找出其中錯(cuò)誤: class Time public: / 函數(shù)原型

13、省略 private: int hour=0; int minute=0; int second=0; ,25,課后作業(yè),設(shè)計(jì)一個(gè)類(lèi),實(shí)現(xiàn)兩個(gè)復(fù)數(shù)的加減運(yùn)算。 設(shè)計(jì)一個(gè)點(diǎn)類(lèi)Point其屬性為其x,y坐標(biāo),能計(jì)算該點(diǎn)到(0,0)的距離。 生成一個(gè)Rational類(lèi),描述最簡(jiǎn)分?jǐn)?shù),并進(jìn)行最簡(jiǎn)分?jǐn)?shù)的運(yùn)算. 兩個(gè)Rational相加,輸出結(jié)果的簡(jiǎn)化形式 兩個(gè)Rational相減,輸出結(jié)果的簡(jiǎn)化形式 兩個(gè)Rational相乘,輸出結(jié)果的簡(jiǎn)化形式 兩個(gè)Rational相除,輸出結(jié)果的簡(jiǎn)化形式 按a/b形式打印Rational,其中a為分子,b為分母,26,課后作業(yè),生成一個(gè)Rectangle類(lèi),描述長(zhǎng)方形,具有l(wèi)ength屬性和width屬性,其成員函數(shù)計(jì)算長(zhǎng)方形的perimeter(周長(zhǎng))和area(面積)。,27,課后作業(yè),修改課堂上的Time類(lèi),用一個(gè)tick成員函數(shù)將Time對(duì)象中存放的時(shí)間遞增1秒

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論