版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1,第二講 類與對象類定義,類的概念 類與結(jié)構(gòu)體 類的定義 訪問權(quán)限 內(nèi)聯(lián)函數(shù),2,課堂練習(xí),定義時鐘結(jié)構(gòu)體 定義兩個函數(shù)實現(xiàn)時間設(shè)置和時間輸出功能(要求形參是引用類型) 在主函數(shù)中調(diào)用兩個函數(shù),3,是面向?qū)ο缶幊痰某绦蚧締挝唬嫦蜻^程呢?) 類是數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)的封裝(想想結(jié)構(gòu)體) 類的對象使用自己的方法完成對數(shù)據(jù)的操作 類可以隱藏數(shù)據(jù)和操作細節(jié),何為類?,4,struct Time int hour; / 0-23 int minute; / 0-59 int second; / 0-59 ;,結(jié)構(gòu)類,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)類,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)類,7,1.1 類,class Time private : 關(guān)于時間的數(shù)據(jù); public : 讀取時間值 ; 調(diào)整時間值 ; ;,類是數(shù)據(jù)和 操作數(shù)據(jù)的函數(shù)的封裝,結(jié)構(gòu)類,8,class Time private : int hour; int minute; int second; ;,public : void set(int,int,int); void get( );
4、,對象使用自己的方法 對數(shù)據(jù)操作,結(jié)構(gòu)類,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ù)的類來處理,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ù)的類來處理,課堂練習(xí):setTime()加上時間有效性檢驗,11,在主函數(shù)中調(diào)用兩個成員函數(shù)時,應(yīng)指明對象名(t1,t2)。表示調(diào)用的是哪一個對象的成員函數(shù)。 2. 在類外定義函數(shù)時,應(yīng)指明函數(shù)的作用域(如
6、void Timeset_time( )。在成員函數(shù)引用本對象的數(shù)據(jù)成員時,只需直接寫數(shù)據(jù)成員名,這時C+系統(tǒng)會把它默認為本對象的數(shù)據(jù)成員。也可以顯式地寫出類名并使用域運算符。 3. 應(yīng)注意區(qū)分什么場合用域運算符“”,什么場合用成員運算符“.”,不要搞混。,注意,12,類的聲明,面向?qū)ο缶幊痰幕A(chǔ)是把自己的數(shù)據(jù)類型定義為類,類是用戶定義的數(shù)據(jù)類型。 定義一個類后,就可以用類名聲明類類型的變量,即將類實例化為不同的對象; C+中用關(guān)鍵字class定義包含數(shù)據(jù)成員和成員函數(shù)的類型。類使程序員可以構(gòu)造對象的屬性和行為或操作。,13,聲明類類型,類是一種用戶自定義的數(shù)據(jù)類型,它的一般定義格式如下: c
7、lass 類名 private: 私有數(shù)據(jù)成員和成員函數(shù); protected: 保護數(shù)據(jù)成員和成員函數(shù); public: 公有數(shù)據(jù)成員和成員函數(shù); ; 各個成員函數(shù)的實現(xiàn);(類外或類內(nèi)) *數(shù)據(jù)成員不能有初值;,14,訪問控制,成員訪問說明符 公有 public: 說明為公有的成員可以被程序中的任何代碼訪問; 私有 private: 說明為私有的成員只能被類本身的成員函數(shù)及友元 類成員函數(shù)或友元函數(shù)訪問,默認類的對象的成員是私有; 保護 protected: 除了類本身的成員函數(shù)和說明為友元函數(shù)或友元類的成員函數(shù)可以訪問保護成員外,該類的派生類的成員也可以訪問。,15,訪問控制,privat
8、e聲明的數(shù)據(jù)和函數(shù)不能在類以外訪問 public聲明的數(shù)據(jù)和函數(shù)可以在類以外訪問 默認為private訪問類型的,類,數(shù)據(jù)和函數(shù),私有,公有,無法從類的外部訪問,可以從類的外部訪問,數(shù)據(jù)和函數(shù),16,成員函數(shù),成員函數(shù)為描述對象的方法 一般定義為公用的 類定義中的成員函數(shù)被默認創(chuàng)建為內(nèi)聯(lián)函數(shù) 可在類的外部定義成員函數(shù) 如果成員函數(shù)在類體外定義,可以用關(guān)鍵字inline聲明為內(nèi)聯(lián)函數(shù)。,在類的外部定義成員函數(shù)的語法: 返回類型 類名:成員函數(shù)名(參數(shù)列表) 函數(shù)定義體 ,雙冒號稱為域名解析分解符,17,內(nèi)聯(lián)函數(shù),使用原因: 提高效率 使用方式: inline 前綴,類內(nèi)部函數(shù)實現(xiàn)缺省為內(nèi)聯(lián)函數(shù)。
9、 工作原理: 函數(shù)代碼擴展嵌入到調(diào)用處,并非調(diào)用,為編譯指令,代碼容量增大(一般是小函數(shù)),但減少調(diào)用的系統(tǒng)開銷;程序運行速度快。 使用限制: 與編譯器有關(guān) (1)不能包括循環(huán)分支轉(zhuǎn)移語句。 (2)不能遞歸。 (3)不能包含static語句。 存取函數(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(); ;,代碼模擬:聲明日期類,類由成員構(gòu)成: 數(shù)據(jù)成員描述對象的屬性 成員
10、函數(shù)描述對象的方法,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 ,類的聲明,類的實現(xiàn),在類外定義 成員函數(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 ,代碼模擬:聲明日期類,類中定義成員函數(shù) 內(nèi)聯(lián)函數(shù)處理,21,代碼練習(xí),定義一個student類,每個學(xué)生包含name, sex, number, score屬性,并且實現(xiàn)顯示和設(shè)置這些屬性的成員函數(shù)。 要求:用到inline關(guān)鍵字,22,總結(jié),類的概念 類與一般結(jié)構(gòu)體的區(qū)別 類的設(shè)計 訪問權(quán)限問題 內(nèi)聯(lián)函數(shù),23,課后作業(yè),1.類中數(shù)據(jù)成員和成員函數(shù)有何區(qū)別? 2 類的訪問權(quán)限有哪些? 并區(qū)別之.
12、 3關(guān)于類定義格式的描述中,判斷對錯. A.一般類中包含有數(shù)據(jù)成員和成員函數(shù). B.一般類的定義格式分為說明部分和實現(xiàn)部分. C.類中成員有三種訪問方式:公有,私有和保護. D.成員函數(shù)都應(yīng)是公有的,數(shù)據(jù)成員都應(yīng)是私有的. 4關(guān)于類的成員函數(shù)描述中,判斷對錯. A.類中可以有一個和多個函數(shù), B成員函數(shù)只能定義在類體外 C.定義在類體外的成員函數(shù)前加inline可以成為內(nèi)聯(lián)函數(shù). D.在類外定義成員函數(shù)時,在函數(shù)名前除了加類型說明符外,還需用作用域符號來限定改成員函數(shù)所屬的類.,24,課后作業(yè),5. 下面是Time類的定義部分,找出其中錯誤: class Time public: / 函數(shù)原型
13、省略 private: int hour=0; int minute=0; int second=0; ,25,課后作業(yè),設(shè)計一個類,實現(xiàn)兩個復(fù)數(shù)的加減運算。 設(shè)計一個點類Point其屬性為其x,y坐標,能計算該點到(0,0)的距離。 生成一個Rational類,描述最簡分數(shù),并進行最簡分數(shù)的運算. 兩個Rational相加,輸出結(jié)果的簡化形式 兩個Rational相減,輸出結(jié)果的簡化形式 兩個Rational相乘,輸出結(jié)果的簡化形式 兩個Rational相除,輸出結(jié)果的簡化形式 按a/b形式打印Rational,其中a為分子,b為分母,26,課后作業(yè),生成一個Rectangle類,描述長方形,具有l(wèi)ength屬性和width屬性,其成員函數(shù)計算長方形的perimeter(周長)和area(面積)。,27,課后作業(yè),修改課堂上的Time類,用一個tick成員函數(shù)將Time對象中存放的時間遞增1秒
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 愚人節(jié)創(chuàng)意活動策劃(7篇)
- 工程技術(shù)年終工作總結(jié)
- 托幼機構(gòu)膳食營養(yǎng)培訓(xùn)
- 國防安全知識講座
- 開業(yè)領(lǐng)導(dǎo)致辭稿15篇
- 面向開放場景的增量目標檢測方法研究
- 氣化飛灰與煤矸石的預(yù)熱混燃試驗研究
- 《艾青詩選》 上課課件
- 建筑與市政工程巡查報告的編制與反饋機制
- 餐飲飯店行業(yè)行政后勤工作總結(jié)
- 電力溝施工組織設(shè)計-電纜溝
- 《法律援助》課件
- 《高處作業(yè)安全》課件
- 春節(jié)后收心安全培訓(xùn)
- 電梯操作證及電梯維修人員資格(特種作業(yè))考試題及答案
- 鍋爐本體安裝單位工程驗收表格
- 一種基于STM32的智能門鎖系統(tǒng)的設(shè)計-畢業(yè)論文
- 妊娠合并強直性脊柱炎的護理查房
- 2024年山東鐵投集團招聘筆試參考題庫含答案解析
- 兒童10歲生日-百日宴-滿月酒生日會成長相冊展示(共二篇)
- 《繪本閱讀與指導(dǎo)》課程教學(xué)大綱
評論
0/150
提交評論