




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1,第二講 類與對象類定義,類的概念 類與結構體 類的定義 訪問權限 內聯(lián)函數(shù),2,課堂練習,定義時鐘結構體 定義兩個函數(shù)實現(xiàn)時間設置和時間輸出功能(要求形參是引用類型) 在主函數(shù)中調用兩個函數(shù),3,是面向對象編程的程序基本單位(面向過程呢?) 類是數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)的封裝(想想結構體) 類的對象使用自己的方法完成對數(shù)據(jù)的操作 類可以隱藏數(shù)據(jù)和操作細節(jié),何為類?,4,struct Time int hour; / 0-23 int minute; / 0-59 int second; / 0-59 ;,結構類,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,結構類,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; ,結構類,7,1.1 類,class Time private : 關于時間的數(shù)據(jù); public : 讀取時間值 ; 調整時間值 ; ;,類是數(shù)據(jù)和 操作數(shù)據(jù)的函數(shù)的封裝,結構類,8,class Time private : int hour; int minute; int second; ;,public : void set(int,int,int); void get( );
4、,對象使用自己的方法 對數(shù)據(jù)操作,結構類,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ù)的類來處理,課堂練習:setTime()加上時間有效性檢驗,11,在主函數(shù)中調用兩個成員函數(shù)時,應指明對象名(t1,t2)。表示調用的是哪一個對象的成員函數(shù)。 2. 在類外定義函數(shù)時,應指明函數(shù)的作用域(如
6、void Timeset_time( )。在成員函數(shù)引用本對象的數(shù)據(jù)成員時,只需直接寫數(shù)據(jù)成員名,這時C+系統(tǒng)會把它默認為本對象的數(shù)據(jù)成員。也可以顯式地寫出類名并使用域運算符。 3. 應注意區(qū)分什么場合用域運算符“”,什么場合用成員運算符“.”,不要搞混。,注意,12,類的聲明,面向對象編程的基礎是把自己的數(shù)據(jù)類型定義為類,類是用戶定義的數(shù)據(jù)類型。 定義一個類后,就可以用類名聲明類類型的變量,即將類實例化為不同的對象; C+中用關鍵字class定義包含數(shù)據(jù)成員和成員函數(shù)的類型。類使程序員可以構造對象的屬性和行為或操作。,13,聲明類類型,類是一種用戶自定義的數(shù)據(jù)類型,它的一般定義格式如下: c
7、lass 類名 private: 私有數(shù)據(jù)成員和成員函數(shù); protected: 保護數(shù)據(jù)成員和成員函數(shù); public: 公有數(shù)據(jù)成員和成員函數(shù); ; 各個成員函數(shù)的實現(xiàn);(類外或類內) *數(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)建為內聯(lián)函數(shù) 可在類的外部定義成員函數(shù) 如果成員函數(shù)在類體外定義,可以用關鍵字inline聲明為內聯(lián)函數(shù)。,在類的外部定義成員函數(shù)的語法: 返回類型 類名:成員函數(shù)名(參數(shù)列表) 函數(shù)定義體 ,雙冒號稱為域名解析分解符,17,內聯(lián)函數(shù),使用原因: 提高效率 使用方式: inline 前綴,類內部函數(shù)實現(xiàn)缺省為內聯(lián)函數(shù)。
9、 工作原理: 函數(shù)代碼擴展嵌入到調用處,并非調用,為編譯指令,代碼容量增大(一般是小函數(shù)),但減少調用的系統(tǒng)開銷;程序運行速度快。 使用限制: 與編譯器有關 (1)不能包括循環(huán)分支轉移語句。 (2)不能遞歸。 (3)不能包含static語句。 存取函數(shù)通常被定義為內聯(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(); ;,代碼模擬:聲明日期類,類由成員構成: 數(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ù) 內聯(lián)函數(shù)處理,21,代碼練習,定義一個student類,每個學生包含name, sex, number, score屬性,并且實現(xiàn)顯示和設置這些屬性的成員函數(shù)。 要求:用到inline關鍵字,22,總結,類的概念 類與一般結構體的區(qū)別 類的設計 訪問權限問題 內聯(lián)函數(shù),23,課后作業(yè),1.類中數(shù)據(jù)成員和成員函數(shù)有何區(qū)別? 2 類的訪問權限有哪些? 并區(qū)別之.
12、 3關于類定義格式的描述中,判斷對錯. A.一般類中包含有數(shù)據(jù)成員和成員函數(shù). B.一般類的定義格式分為說明部分和實現(xiàn)部分. C.類中成員有三種訪問方式:公有,私有和保護. D.成員函數(shù)都應是公有的,數(shù)據(jù)成員都應是私有的. 4關于類的成員函數(shù)描述中,判斷對錯. A.類中可以有一個和多個函數(shù), B成員函數(shù)只能定義在類體外 C.定義在類體外的成員函數(shù)前加inline可以成為內聯(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è),設計一個類,實現(xiàn)兩個復數(shù)的加減運算。 設計一個點類Point其屬性為其x,y坐標,能計算該點到(0,0)的距離。 生成一個Rational類,描述最簡分數(shù),并進行最簡分數(shù)的運算. 兩個Rational相加,輸出結果的簡化形式 兩個Rational相減,輸出結果的簡化形式 兩個Rational相乘,輸出結果的簡化形式 兩個Rational相除,輸出結果的簡化形式 按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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 虛擬時尚搭配直播教學考核試卷
- 服務流程標準化客戶溝通規(guī)范考核試卷
- 虛擬時尚產品設計趨勢考核試卷
- 健康與心血管疾病康復咨詢考核試卷
- 價值投資在資產配置中的定位考核試卷
- 節(jié)能環(huán)保優(yōu)勢考核試卷
- 水產養(yǎng)殖品種養(yǎng)殖密度與生長性能關系考核試卷
- 心理治療輔助反饋系統(tǒng)考核試卷
- 2025年中國PVC勞防用品數(shù)據(jù)監(jiān)測報告
- 2025年中國GPS便攜機數(shù)據(jù)監(jiān)測報告
- 2025年育嬰師職業(yè)資格考試試題及答案
- 2023年三種人試題附答案
- 北京市八十中學2025屆八年級英語第二學期期中經(jīng)典試題含答案
- 2024年 金澤鎮(zhèn)專職村務工作者招錄考試真題試題含答案
- 哇哈哈品牌管理制度
- 2025年內蒙古自治區(qū)包頭市東河區(qū)第二中學英語八年級第二學期期末復習檢測模擬試題含答案
- 2025年四川省達州市中考英語真題(原卷版)
- 2024年證券市場基本法律法規(guī)真題及答案
- 湖南省2025年高考公安院校公安專業(yè)考生檔案審核表
- 2025年第十屆“學憲法、講憲法”網(wǎng)絡知識競賽題庫(含答案)
- 歷史●湖北卷丨2021年湖北省普通高中學業(yè)水平選擇性考試歷史試卷及答案
評論
0/150
提交評論