C語言程序設計實驗答案類與對象_第1頁
C語言程序設計實驗答案類與對象_第2頁
C語言程序設計實驗答案類與對象_第3頁
C語言程序設計實驗答案類與對象_第4頁
C語言程序設計實驗答案類與對象_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗04 類與對象(6學時)(第4章 類與對象)一、實驗目的(1) 掌握類的聲明和使用。(2) 掌握類的聲明和對象的聲明。(3) 復習具有不同訪問屬性的成員的訪問方式。(4) 觀察構造函數(shù)和析構函數(shù)的執(zhí)行過程。(5) 學習類的組合使用方法。(6) 使用Visual Studio 2010的調(diào)試功能觀察程序流程,跟蹤觀察類的構造函數(shù)、析構函數(shù)、成員函數(shù)的執(zhí)行順序。二、實驗任務4_1 聲明一個CPU類。包含等級(rank)、頻率(frequency)、電壓(voltage)等屬性,有兩個公有成員函數(shù)run、stop。其中,rank為枚舉類型CPU_Rank,聲明為enum CPU_Rank P1=

2、1, P2, P3, P4, P5, P6, P7 ; frequency為單位是MHz的整型數(shù),voltage為浮點型的電壓值。觀察構造函數(shù)和析構函數(shù)的調(diào)用順序。4_2 聲明一個簡單的Computer類。有數(shù)據(jù)成員芯片(cpu)、內(nèi)存(ram)、光驅(qū)(cdrom)等,有兩個公有成員函數(shù)run和stop。cpu為CPU類的一個對象,ram為RAM類的一個對象,cdrom為CDROM類的一個對象,聲明并實現(xiàn)這個類。4_3 聲明一個表示時間的結構體??梢跃_表示年、月、日、小時、分、秒;提示用戶輸入年、月、日、小時、分、秒的值,然后完整地顯示出來。4_4(習題4-10)設計一個用于人事管理的Peo

3、ple(人員)類。考慮到通用性,這里只抽象出所有類型人員都具有的屬性:number(編號),sex(性別)、birthday(出生日期)、id(身份證號)等。其中“出生日期”聲明為一個“日期”類內(nèi)嵌子對象。用成員函數(shù)實現(xiàn)人員信息的錄入和顯示。要求包括:構造函數(shù)和析構函數(shù)、內(nèi)聯(lián)成員函數(shù)、組合。三、實驗步驟1.(驗證)聲明一個CPU類,觀察構造函數(shù)和析構函數(shù)的調(diào)用順序。首先聲明枚舉類型CPU_Rank,例如enum CPU_Rank P1=1, P2, P3, P4, P5, P6, P7 ,再聲明CPU類,包含等級(rank)、頻率(frequency)、電壓(voltage)等私有數(shù)據(jù)成員,聲

4、明成員函數(shù)run和stop,用來輸出提示信息,在構造函數(shù)和析構函數(shù)中也可以輸出提示順序。在主程序中聲明一個CPU的對象,調(diào)用其成員函數(shù),觀察類對象的構造與析構順序,以及成員函數(shù)的調(diào)用。程序名:lab4_1.cpp。(程序見步驟2) 程序的運行結果:2.(示例)調(diào)試程序文件lab4_1.cpp。使用調(diào)試功能觀察程序lab4_1.cpp的運行流程,跟蹤觀察類的構造函數(shù)、析構函數(shù)、成員函數(shù)的執(zhí)行順序。參考程序如下:/lab4_1.cpp#include using namespace std;enum CPU_Rank P1=1,P2,P3,P4,P5,P6,P7 ;class CPUprivate

5、:CPU_Rank rank;/數(shù)據(jù)成員,類中的變量int frequency;float voltage;public:CPU(CPU_Rank r,int f,float v)/構造函數(shù),對變量初始化rank=r;frequency=f;voltage=v;cout構造了一個CPU!endl;CPU() cout析構了一個CPU!endl; /析構函數(shù),清除變量,系統(tǒng)的要求CPU_Rank GetRank()const return rank; /取值成員函數(shù),取變量的值int GetFrequency()const return frequency; float GetVoltage()

6、 const return voltage; void SetRank(CPU_Rank r) rank=r; /賦值成員函數(shù),改變變量的值void SetFrequency(int f) frequency=f; void SetVoltage(float v) voltage=v; void run() coutCPU開始運行!endl; /其他成員函數(shù),根據(jù)情況給出void stop() coutCPU停止運行!endl; ;/const聲明為常成員函數(shù),禁止改變對象的數(shù)據(jù)成員的值void main()CPU a(P6,300,2.8);a.run();a.stop();3.(操作)調(diào)試

7、操作步驟如下:(1) 單擊“調(diào)試 | 逐語句”命令,系統(tǒng)進行單步執(zhí)行狀態(tài),程序開始運行,一個DOS窗口出現(xiàn),此時Visual Studio中光標停在main()函數(shù)的入口處。(2) 單擊“調(diào)試 | 逐過程”,此時,光標下移,程序準備執(zhí)行CPU對象的初始化。(3) 單擊“調(diào)試 | 逐語句”,程序準備執(zhí)行CPU類的構造函數(shù)。(4) 連續(xù)單擊“調(diào)試 | 逐過程”,觀察構造函數(shù)的執(zhí)行情況,直到執(zhí)行完構造函數(shù),程序回到主函數(shù),光標停在“a.run();”行前。(5) 此時程序準備執(zhí)行CPU對象的run()方法,單擊“調(diào)試 | 逐語句”,程序進入run()成員函數(shù),連續(xù)單擊“調(diào)試 | 逐過程”,直到光標停

8、在“a.stop();”行前。(6) 繼續(xù)執(zhí)行程序,參照上述的方法,觀察程序的執(zhí)行順序,加深對類的構造函數(shù)、析構函數(shù)、成員函數(shù)的執(zhí)行順序的認識。(7) 單擊Step Into,進入CPU()析構函數(shù),連續(xù)單擊“調(diào)試 | 逐過程”,直到光標又停在main()函數(shù)的“”行前。(8) 將光標移到main()函數(shù)的“”后,右擊,再單擊“運行到光標處”,運行結束。(9) 再試試“調(diào)試”菜單欄中別的菜單項,熟悉調(diào)試的各種方法。4.(編程)聲明CPU類、RAM類以及CDROM類。再聲明Computer類,觀察類對象及其成員變量的構造與析構順序,以及成員函數(shù)的調(diào)用。首先聲明CPU類(可使用lab4_1.cpp

9、中聲明的CPU類)、RAM類以及CDROM類。再聲明Computer類:聲明私有數(shù)據(jù)成員cpu、ram、cdrom,聲明公有成員函數(shù)run、stop,可在其中輸出提示信息。在主程序中聲明一個Computer的對象,調(diào)用其成員函數(shù),觀察類對象及其成員變量的構造與析構順序,以及成員函數(shù)的調(diào)用。程序名:lab4_2.cpp。提示:RAM類中有一個數(shù)據(jù)成員(int ramtype;);CDROM類中有一個數(shù)據(jù)成員(int cdromtype;);為了觀察程序執(zhí)行的順序,類似程序lab4_1.cpp,在構造函數(shù)、析構函數(shù)、run和stop函數(shù)中應包含一條輸出語句,給出相關的信息;每個類中至少包括:數(shù)據(jù)成

10、員、構造函數(shù)、析構函數(shù)、取值成員函數(shù)、賦值成員函數(shù)。 程序及運行結果:/lab4_2.cpp#include using namespace std;enum CPU_RankP1=1,P2,P3,P4,P5,P6,P7;/聲明枚舉類型CPU_Rankclass CPU/聲明類CPUprivate:CPU_Rank rank;int frequency;float voltage;public:CPU(CPU_Rank r,int f,float v)rank=r;frequency=f;voltage=v;cout構造了一個CPU!endl;CPU() cout析構了一個CPU!endl;

11、CPU_Rank GetRank()const return rank; int GetFrequency()const return frequency; float GetVoltage()const return voltage; void SetRank(CPU_Rank r) rank=r; void SetFrequency(int f) frequency=f; void SetVoltage(float v) voltage=v; ;class RAM/聲明類RAMprivate:int ramtype;public:RAM(int r=0)ramtype=r;cout構造了一

12、個RAM!endl;RAM() cout析構了一個RAM!endl; int Getramtype()const return ramtype; void Setramtype(int r) ramtype=r; ;class CDROM/聲明類CDROMprivate:int cdromtype;public:CDROM(int cd=0)cdromtype=cd;cout構造了一個CDROM!endl;CDROM() cout析構了一個CDROM!endl; int Getcdromtype()const return cdromtype; void Setcdromtype (int c

13、) cdromtype=c; ;class COMPUTER/聲明類COMPUTERprivate:CPU cpu;RAM ram;CDROM cdrom;public:COMPUTER(CPU_Rank r,int f,float v,int ra,int cd):cpu(r,f,v),ram(ra),cdrom(cd) cout構造了一個COMPUTER!endl; COMPUTER() cout析構了一個COMPUTER!endl; void run() coutCOMPUTER開始運行!endl; void stop() coutCOMPUTER停止運行!endl; ;void mai

14、n()COMPUTER a(P6,300,2.8,2,500);a.run();a.stop();5.(操作)調(diào)試程序lab4_2.cpp。使用調(diào)試功能觀察lab4_2.cpp程序的運行流程,跟蹤觀察類的構造函數(shù)、析構函數(shù)、成員函數(shù)的執(zhí)行順序,特別注意觀察成員變量的構造與析構順序。6. 編程,習題2-31)聲明一個表示時間的結構體。聲明一個表示時間的結構體,可以精確表示年、月、日、小時、分、秒;提示用戶輸入年、月、日、小時、分、秒的值,然后完整地顯示出來。建立一個項目lab4_3,包含一個C+源程序lab4_3.cpp。在主程序中實現(xiàn)輸入輸出。參考運行結果: 程序及運行結果:/lab4_3.c

15、pp(習題2-31)#include using namespace std;struct timeshort yy,mm,dd,hh,mi,ss;void main()time t1=2012,2,25,10,30,20;/賦初值coutt1.yy年t1.mm月t1.dd日t1.hh:t1.mi:t1.ssendl;time t2;coutt2.yy;coutt2.mm;coutt2.dd;coutt2.hh;coutt2.mi;coutt2.ss;coutt2.yy年t2.mm月t2.dd日t2.hh:t2.mi:t2.ssendl;7.(編程,習題4-10)設計一個用于人事管理的Peop

16、le(人員)類。類People的屬性:number(編號),sex(性別)、birthday(出生日期)、id(身份證號)等。其中“出生日期”聲明為一個“日期”類內(nèi)嵌子對象。用成員函數(shù)實現(xiàn)人員信息的錄入和顯示。要求包括:構造函數(shù)和析構函數(shù)、內(nèi)聯(lián)成員函數(shù)、組合。程序名:lab4_4.cpp。提示:構造函數(shù)和析構函數(shù)的函數(shù)體可以定義為空;兩個類中對年、月和日分別定義取值和賦值成員函數(shù);People類中的數(shù)據(jù)成員為:unsigned number;/編號,4位數(shù)字,第一位為1char sex;/性別,m為男,w為女Date birthday;/出生日期unsigned id;/身份證號,8位數(shù)字,第

17、一位不為0參考程序運行結果: 程序及運行結果:/ lab4_4.cpp#include using namespace std;class Dateprivate:int yy,mm,dd;public:Date()Date() int Getyy()const return yy; int Getmm()const return mm; int Getdd()const return dd; void Setyy(int y) yy=y; void Setmm(int m) mm=m; void Setdd(int d) dd=d; ;class Peopleprivate:unsigned

18、 number;/編號,4位數(shù)字,第一位為1char sex;/性別,m為男,w為女Date birthday;/出生日期unsigned id;/身份證號,6位數(shù)字,第一位不為0public:People()People()unsigned Getnumber() return number; char Getsex() return sex; int Getbirthyy()const return birthday.Getyy(); int Getbirthmm()const return birthday.Getmm(); int Getbirthdd()const return bi

19、rthday.Getdd(); unsigned Getid() return id; void Setnumber(unsigned nu) number=nu; void Setsex(char se) sex=se; void Setbirthyy(int y) birthday.Setyy(y); void Setbirthmm(int m) birthday.Setmm(m); void Setbirthdd(int d) birthday.Setdd(d); void Setid(unsigned d) id=d; ;void main()People p1,p2;unsigned n,d;char s;int yy,mm,dd;/輸入p1coutn;p1.Setnumber(n);couts;p1

溫馨提示

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

最新文檔

評論

0/150

提交評論