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

下載本文檔

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

文檔簡介

第頁實驗04類與對象〔6學(xué)時〕〔第4章類與對象〕一、實驗?zāi)康?1)掌握類的聲明和使用。(2)掌握類的聲明和對象的聲明。(3)復(fù)習(xí)具有不同訪問屬性的成員的訪問方式。(4)觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行過程。(5)學(xué)習(xí)類的組合使用方法。(6)使用VisualStudio2021的調(diào)試功能觀察程序流程,跟蹤觀察類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序。二、實驗任務(wù)4_1聲明一個CPU類。包含等級(rank)、頻率(frequency)、電壓(voltage)等屬性,有兩個公有成員函數(shù)run、stop。其中,rank為枚舉類型CPU_Rank,聲明為enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};frequency為單位是MHz的整型數(shù),voltage為浮點型的電壓值。觀察構(gòu)造函數(shù)和析構(gòu)函數(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聲明一個表示時間的構(gòu)造體??梢詼?zhǔn)確表示年、月、日、小時、分、秒;提示用戶輸入年、月、日、小時、分、秒的值,然后完整地顯示出來。4_4〔習(xí)題4-10〕設(shè)計一個用于人事管理的People〔人員〕類??紤]到通用性,這里只抽象出所有類型人員都具有的屬性:number〔編號〕,sex〔性別〕、birthday〔出生日期〕、id〔身份證號〕等。其中“出生日期〞聲明為一個“日期〞類內(nèi)嵌子對象。用成員函數(shù)實現(xiàn)人員信息的錄入和顯示。要求包括:構(gòu)造函數(shù)和析構(gòu)函數(shù)、內(nèi)聯(lián)成員函數(shù)、組合。三、實驗步驟1.〔驗證〕聲明一個CPU類,觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序。首先聲明枚舉類型CPU_Rank,例如enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},再聲明CPU類,包含等級(rank)、頻率(frequency)、電壓(voltage)等私有數(shù)據(jù)成員,聲明成員函數(shù)run和stop,用來輸出提示信息,在構(gòu)造函數(shù)和析構(gòu)函數(shù)中也可以輸出提示順序。在主程序中聲明一個CPU的對象,調(diào)用其成員函數(shù),觀察類對象的構(gòu)造與析構(gòu)順序,以及成員函數(shù)的調(diào)用。程序名:?!渤绦蛞姴襟E2〕★程序的運行結(jié)果:2.〔例如〕調(diào)試程序文件lab4_1.cpp。使用調(diào)試功能觀察程序lab4_1.cpp的運行流程,跟蹤觀察類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序。參考程序如下:#include<iostream>usingnamespacestd;enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};classCPU{private: CPU_Rankrank;//數(shù)據(jù)成員,類中的變量 intfrequency; floatvoltage;public: CPU(CPU_Rankr,intf,floatv){//構(gòu)造函數(shù),對變量初始化 rank=r; frequency=f; voltage=v; cout<<"構(gòu)造了一個CPU!"<<endl; } ~CPU(){cout<<"析構(gòu)了一個CPU!"<<endl;}//析構(gòu)函數(shù),去除變量,系統(tǒng)的要求 CPU_RankGetRank()const{returnrank;}//取值成員函數(shù),取變量的值 intGetFrequency()const{returnfrequency;} floatGetVoltage()const{returnvoltage;} voidSetRank(CPU_Rankr){rank=r;}//賦值成員函數(shù),改變變量的值 voidSetFrequency(intf){frequency=f;} voidSetVoltage(floatv){voltage=v;} voidrun(){cout<<"CPU開場運行!"<<endl;}//其他成員函數(shù),根據(jù)情況給出 voidstop(){cout<<"CPU停頓運行!"<<endl;}};//const聲明為常成員函數(shù),制止改變對象的數(shù)據(jù)成員的值voidmain(){ CPUa(P6,300,2.8); a.run(); a.stop();}3.〔操作〕調(diào)試操作步驟如下:單擊“調(diào)試|逐語句〞命令,系統(tǒng)進展單步執(zhí)行狀態(tài),程序開場運行,一個DOS窗口出現(xiàn),此時VisualStudio中光標(biāo)停在main()函數(shù)的入口處。單擊“調(diào)試|逐過程〞,此時,光標(biāo)下移,程序準(zhǔn)備執(zhí)行CPU對象的初始化。單擊“調(diào)試|逐語句〞,程序準(zhǔn)備執(zhí)行CPU類的構(gòu)造函數(shù)。連續(xù)單擊“調(diào)試|逐過程〞,觀察構(gòu)造函數(shù)的執(zhí)行情況,直到執(zhí)行完構(gòu)造函數(shù),程序回到主函數(shù),光標(biāo)停在“a.run();〞行前。此時程序準(zhǔn)備執(zhí)行CPU對象的run()方法,單擊“調(diào)試|逐語句〞,程序進入run()成員函數(shù),連續(xù)單擊“調(diào)試|逐過程〞,直到光標(biāo)停在“a.stop();〞行前。繼續(xù)執(zhí)行程序,參照上述的方法,觀察程序的執(zhí)行順序,加深對類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序的認(rèn)識。單擊StepInto,進入~CPU()析構(gòu)函數(shù),連續(xù)單擊“調(diào)試|逐過程〞,直到光標(biāo)又停在main()函數(shù)的“}〞行前。將光標(biāo)移到main()函數(shù)的“}〞后,右擊,再單擊“運行到光標(biāo)處〞,運行完畢。再試試“調(diào)試〞菜單欄中別的菜單項,熟悉調(diào)試的各種方法。4.〔編程〕聲明CPU類、RAM類以及CDROM類。再聲明Computer類,觀察類對象及其成員變量的構(gòu)造與析構(gòu)順序,以及成員函數(shù)的調(diào)用。首先聲明CPU類〔可使用lab4_1.cpp中聲明的CPU類〕、RAM類以及CDROM類。再聲明Computer類:聲明私有數(shù)據(jù)成員cpu、ram、cdrom,聲明公有成員函數(shù)run、stop,可在其中輸出提示信息。在主程序中聲明一個Computer的對象,調(diào)用其成員函數(shù),觀察類對象及其成員變量的構(gòu)造與析構(gòu)順序,以及成員函數(shù)的調(diào)用。程序名:。提示:RAM類中有一個數(shù)據(jù)成員〔intramtype;〕;CDROM類中有一個數(shù)據(jù)成員〔intcdromtype;〕;為了觀察程序執(zhí)行的順序,類似程序lab4_1.cpp,在構(gòu)造函數(shù)、析構(gòu)函數(shù)、run和stop函數(shù)中應(yīng)包含一條輸出語句,給出相關(guān)的信息;每個類中至少包括:數(shù)據(jù)成員、構(gòu)造函數(shù)、析構(gòu)函數(shù)、取值成員函數(shù)、賦值成員函數(shù)?!锍绦蚣斑\行結(jié)果:#include<iostream>usingnamespacestd;enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};//聲明枚舉類型CPU_RankclassCPU{//聲明類CPUprivate: CPU_Rankrank; intfrequency; floatvoltage;public: CPU(CPU_Rankr,intf,floatv){ rank=r; frequency=f; voltage=v; cout<<"構(gòu)造了一個CPU!"<<endl; } ~CPU(){cout<<"析構(gòu)了一個CPU!"<<endl;} CPU_RankGetRank()const{returnrank;} intGetFrequency()const{returnfrequency;} floatGetVoltage()const{returnvoltage;} voidSetRank(CPU_Rankr){rank=r;} voidSetFrequency(intf){frequency=f;} voidSetVoltage(floatv){voltage=v;}};classRAM{//聲明類RAMprivate: intramtype;public: RAM(intr=0){ ramtype=r; cout<<"構(gòu)造了一個RAM!"<<endl; } ~RAM(){cout<<"析構(gòu)了一個RAM!"<<endl;} intGetramtype()const{returnramtype;} voidSetramtype(intr){ramtype=r;}};classCDROM{//聲明類CDROMprivate: intcdromtype;public: CDROM(intcd=0){ cdromtype=cd; cout<<"構(gòu)造了一個CDROM!"<<endl; } ~CDROM(){cout<<"析構(gòu)了一個CDROM!"<<endl;} intGetcdromtype()const{returncdromtype;} voidSetcdromtype(intc){cdromtype=c;}};classCOMPUTER{//聲明類COMPUTERprivate: CPUcpu; RAMram; CDROMcdrom;public: COMPUTER(CPU_Rankr,intf,floatv,intra,intcd) :cpu(r,f,v),ram(ra),cdrom(cd) {cout<<"構(gòu)造了一個COMPUTER!"<<endl;} ~COMPUTER(){cout<<"析構(gòu)了一個COMPUTER!"<<endl;} voidrun(){cout<<"COMPUTER開場運行!"<<endl;} voidstop(){cout<<"COMPUTER停頓運行!"<<endl;}};voidmain(){ COMPUTERa(P6,300,2.8,2,500); a.run(); a.stop();}5.〔操作〕調(diào)試程序lab4_2.cpp。使用調(diào)試功能觀察lab4_2.cpp程序的運行流程,跟蹤觀察類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序,特別注意觀察成員變量的構(gòu)造與析構(gòu)順序。6.編程,習(xí)題2-31〕聲明一個表示時間的構(gòu)造體。聲明一個表示時間的構(gòu)造體,可以準(zhǔn)確表示年、月、日、小時、分、秒;提示用戶輸入年、月、日、小時、分、秒的值,然后完整地顯示出來。建立一個工程lab4_3,包含一個C++源程序。在主程序中實現(xiàn)輸入輸出。參考運行結(jié)果:★程序及運行結(jié)果://lab4_3.cpp〔習(xí)題2-31〕#include<iostream>usingnamespacestd;structtime{ shortyy,mm,dd,hh,mi,ss;};voidmain(){ timet1={2021,2,25,10,30,20};//賦初值 cout<<t1.yy<<"年"<<t1.mm<<"月"<<t1.dd<<"日"<< t1.hh<<":"<<t1.mi<<":"<<t1.ss<<endl; timet2; cout<<"輸入年份:";cin>>t2.yy; cout<<"輸入月份:";cin>>t2.mm; cout<<"輸入日:";cin>>t2.dd; cout<<"輸入小時:";cin>>t2.hh; cout<<"輸入分鐘:";cin>>t2.mi; cout<<"輸入秒:";cin>>t2.ss; cout<<t2.yy<<"年"<<t2.mm<<"月"<<t2.dd<<"日"<< t2.hh<<":"<<t2.mi<<":"<<t2.ss<<endl;}7.〔編程,習(xí)題4-10〕設(shè)計一個用于人事管理的People〔人員〕類。類People的屬性:number〔編號〕,sex〔性別〕、birthday〔出生日期〕、id〔身份證號〕等。其中“出生日期〞聲明為一個“日期〞類內(nèi)嵌子對象。用成員函數(shù)實現(xiàn)人員信息的錄入和顯示。要求包括:構(gòu)造函數(shù)和析構(gòu)函數(shù)、內(nèi)聯(lián)成員函數(shù)、組合。程序名:。提示:構(gòu)造函數(shù)和析構(gòu)函數(shù)的函數(shù)體可以定義為空;兩個類中對年、月和日分別定義取值和賦值成員函數(shù);People類中的數(shù)據(jù)成員為: unsignednumber;//編號,4位數(shù)字,第一位為1 charsex;//性別,m為男,w為女 Datebirthday;//出生日期 unsignedid;//身份證號,8位數(shù)字,第一位不為0參考程序運行結(jié)果:★程序及運行結(jié)果://lab4_4.cpp#include<iostream>usingnamespacestd;classDate{private: intyy,mm,dd;public: Date(){ } ~Date(){} intGetyy()const{returnyy;} intGetmm()const{returnmm;} intGetdd()const{returndd;} voidSetyy(inty){yy=y;} voidSetmm(intm){mm=m;} voidSetdd(intd){dd=d;}};classPeople{private: unsignednumber;//編號,4位數(shù)字,第一位為1 charsex;//性別,m為男,w為女 Datebirthday;//出生日期 unsignedid;//身份證號,6位數(shù)字,第一位不為0public: People(){} ~People(){} unsignedGetnumber(){returnnumber;} charGetsex(){returnsex;} intGetbirthyy()const{returnbirthday.Getyy();} intGetbirthmm()const{returnbirthday.Getmm();} intGetbirthdd()const{returnbirthday.Getdd();} unsignedGetid(){returnid;} voidSetnumber(unsignednu){number=nu;} voidSetsex(charse){sex=se;} voidSetbirthyy(inty){birthday.Setyy(y);} voidSetbirthmm(intm){birthday.Setmm(m);} voidSetbirthdd(intd){birthday.Setdd(d);} voidSetid(unsignedd){id=d;}};voidmain(){ Peoplep1,p2; unsignedn,d; chars; intyy,mm,dd; //輸入p1 cout<<"輸入編號:";cin>>n; p1.Setnumber(n); cout<<"輸入性別:";cin>>s; p1.Setsex(s); cout<<"輸入出生日期:";cin>>yy>>mm>>dd; p1.Setbirthyy(yy);p1.Setbirthmm(mm);p1.Setbirthdd(dd); cout<<"輸入身份證號:";cin>>d; p1.Setid(d); cout<<"\n輸入下

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論