




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第頁實(shí)驗(yàn)04類與對(duì)象〔6學(xué)時(shí)〕〔第4章類與對(duì)象〕一、實(shí)驗(yàn)?zāi)康?1)掌握類的聲明和使用。(2)掌握類的聲明和對(duì)象的聲明。(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í)行順序。二、實(shí)驗(yàn)任務(wù)4_1聲明一個(gè)CPU類。包含等級(jí)(rank)、頻率(frequency)、電壓(voltage)等屬性,有兩個(gè)公有成員函數(shù)run、stop。其中,rank為枚舉類型CPU_Rank,聲明為enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};frequency為單位是MHz的整型數(shù),voltage為浮點(diǎn)型的電壓值。觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序。4_2聲明一個(gè)簡(jiǎn)單的Computer類。有數(shù)據(jù)成員芯片(cpu)、內(nèi)存(ram)、光驅(qū)(cdrom)等,有兩個(gè)公有成員函數(shù)run和stop。cpu為CPU類的一個(gè)對(duì)象,ram為RAM類的一個(gè)對(duì)象,cdrom為CDROM類的一個(gè)對(duì)象,聲明并實(shí)現(xiàn)這個(gè)類。4_3聲明一個(gè)表示時(shí)間的構(gòu)造體??梢詼?zhǔn)確表示年、月、日、小時(shí)、分、秒;提示用戶輸入年、月、日、小時(shí)、分、秒的值,然后完整地顯示出來。4_4〔習(xí)題4-10〕設(shè)計(jì)一個(gè)用于人事管理的People〔人員〕類??紤]到通用性,這里只抽象出所有類型人員都具有的屬性:number〔編號(hào)〕,sex〔性別〕、birthday〔出生日期〕、id〔身份證號(hào)〕等。其中“出生日期〞聲明為一個(gè)“日期〞類內(nèi)嵌子對(duì)象。用成員函數(shù)實(shí)現(xiàn)人員信息的錄入和顯示。要求包括:構(gòu)造函數(shù)和析構(gòu)函數(shù)、內(nèi)聯(lián)成員函數(shù)、組合。三、實(shí)驗(yàn)步驟1.〔驗(yàn)證〕聲明一個(gè)CPU類,觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序。首先聲明枚舉類型CPU_Rank,例如enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},再聲明CPU類,包含等級(jí)(rank)、頻率(frequency)、電壓(voltage)等私有數(shù)據(jù)成員,聲明成員函數(shù)run和stop,用來輸出提示信息,在構(gòu)造函數(shù)和析構(gòu)函數(shù)中也可以輸出提示順序。在主程序中聲明一個(gè)CPU的對(duì)象,調(diào)用其成員函數(shù),觀察類對(duì)象的構(gòu)造與析構(gòu)順序,以及成員函數(shù)的調(diào)用。程序名:?!渤绦蛞姴襟E2〕★程序的運(yùn)行結(jié)果:2.〔例如〕調(diào)試程序文件lab4_1.cpp。使用調(diào)試功能觀察程序lab4_1.cpp的運(yùn)行流程,跟蹤觀察類的構(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ù),對(duì)變量初始化 rank=r; frequency=f; voltage=v; cout<<"構(gòu)造了一個(gè)CPU!"<<endl; } ~CPU(){cout<<"析構(gòu)了一個(gè)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開場(chǎng)運(yùn)行!"<<endl;}//其他成員函數(shù),根據(jù)情況給出 voidstop(){cout<<"CPU停頓運(yùn)行!"<<endl;}};//const聲明為常成員函數(shù),制止改變對(duì)象的數(shù)據(jù)成員的值voidmain(){ CPUa(P6,300,2.8); a.run(); a.stop();}3.〔操作〕調(diào)試操作步驟如下:?jiǎn)螕簟罢{(diào)試|逐語句〞命令,系統(tǒng)進(jìn)展單步執(zhí)行狀態(tài),程序開場(chǎng)運(yùn)行,一個(gè)DOS窗口出現(xiàn),此時(shí)VisualStudio中光標(biāo)停在main()函數(shù)的入口處。單擊“調(diào)試|逐過程〞,此時(shí),光標(biāo)下移,程序準(zhǔn)備執(zhí)行CPU對(duì)象的初始化。單擊“調(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();〞行前。此時(shí)程序準(zhǔn)備執(zhí)行CPU對(duì)象的run()方法,單擊“調(diào)試|逐語句〞,程序進(jìn)入run()成員函數(shù),連續(xù)單擊“調(diào)試|逐過程〞,直到光標(biāo)停在“a.stop();〞行前。繼續(xù)執(zhí)行程序,參照上述的方法,觀察程序的執(zhí)行順序,加深對(duì)類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序的認(rèn)識(shí)。單擊StepInto,進(jìn)入~CPU()析構(gòu)函數(shù),連續(xù)單擊“調(diào)試|逐過程〞,直到光標(biāo)又停在main()函數(shù)的“}〞行前。將光標(biāo)移到main()函數(shù)的“}〞后,右擊,再單擊“運(yùn)行到光標(biāo)處〞,運(yùn)行完畢。再試試“調(diào)試〞菜單欄中別的菜單項(xiàng),熟悉調(diào)試的各種方法。4.〔編程〕聲明CPU類、RAM類以及CDROM類。再聲明Computer類,觀察類對(duì)象及其成員變量的構(gòu)造與析構(gòu)順序,以及成員函數(shù)的調(diào)用。首先聲明CPU類〔可使用lab4_1.cpp中聲明的CPU類〕、RAM類以及CDROM類。再聲明Computer類:聲明私有數(shù)據(jù)成員cpu、ram、cdrom,聲明公有成員函數(shù)run、stop,可在其中輸出提示信息。在主程序中聲明一個(gè)Computer的對(duì)象,調(diào)用其成員函數(shù),觀察類對(duì)象及其成員變量的構(gòu)造與析構(gòu)順序,以及成員函數(shù)的調(diào)用。程序名:。提示:RAM類中有一個(gè)數(shù)據(jù)成員〔intramtype;〕;CDROM類中有一個(gè)數(shù)據(jù)成員〔intcdromtype;〕;為了觀察程序執(zhí)行的順序,類似程序lab4_1.cpp,在構(gòu)造函數(shù)、析構(gòu)函數(shù)、run和stop函數(shù)中應(yīng)包含一條輸出語句,給出相關(guān)的信息;每個(gè)類中至少包括:數(shù)據(jù)成員、構(gòu)造函數(shù)、析構(gòu)函數(shù)、取值成員函數(shù)、賦值成員函數(shù)。★程序及運(yùn)行結(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)造了一個(gè)CPU!"<<endl; } ~CPU(){cout<<"析構(gòu)了一個(gè)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)造了一個(gè)RAM!"<<endl; } ~RAM(){cout<<"析構(gòu)了一個(gè)RAM!"<<endl;} intGetramtype()const{returnramtype;} voidSetramtype(intr){ramtype=r;}};classCDROM{//聲明類CDROMprivate: intcdromtype;public: CDROM(intcd=0){ cdromtype=cd; cout<<"構(gòu)造了一個(gè)CDROM!"<<endl; } ~CDROM(){cout<<"析構(gòu)了一個(gè)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)造了一個(gè)COMPUTER!"<<endl;} ~COMPUTER(){cout<<"析構(gòu)了一個(gè)COMPUTER!"<<endl;} voidrun(){cout<<"COMPUTER開場(chǎng)運(yùn)行!"<<endl;} voidstop(){cout<<"COMPUTER停頓運(yùn)行!"<<endl;}};voidmain(){ COMPUTERa(P6,300,2.8,2,500); a.run(); a.stop();}5.〔操作〕調(diào)試程序lab4_2.cpp。使用調(diào)試功能觀察lab4_2.cpp程序的運(yùn)行流程,跟蹤觀察類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序,特別注意觀察成員變量的構(gòu)造與析構(gòu)順序。6.編程,習(xí)題2-31〕聲明一個(gè)表示時(shí)間的構(gòu)造體。聲明一個(gè)表示時(shí)間的構(gòu)造體,可以準(zhǔn)確表示年、月、日、小時(shí)、分、秒;提示用戶輸入年、月、日、小時(shí)、分、秒的值,然后完整地顯示出來。建立一個(gè)工程lab4_3,包含一個(gè)C++源程序。在主程序中實(shí)現(xiàn)輸入輸出。參考運(yùn)行結(jié)果:★程序及運(yùn)行結(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<<"輸入小時(shí):";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è)計(jì)一個(gè)用于人事管理的People〔人員〕類。類People的屬性:number〔編號(hào)〕,sex〔性別〕、birthday〔出生日期〕、id〔身份證號(hào)〕等。其中“出生日期〞聲明為一個(gè)“日期〞類內(nèi)嵌子對(duì)象。用成員函數(shù)實(shí)現(xiàn)人員信息的錄入和顯示。要求包括:構(gòu)造函數(shù)和析構(gòu)函數(shù)、內(nèi)聯(lián)成員函數(shù)、組合。程序名:。提示:構(gòu)造函數(shù)和析構(gòu)函數(shù)的函數(shù)體可以定義為空;兩個(gè)類中對(duì)年、月和日分別定義取值和賦值成員函數(shù);People類中的數(shù)據(jù)成員為: unsignednumber;//編號(hào),4位數(shù)字,第一位為1 charsex;//性別,m為男,w為女 Datebirthday;//出生日期 unsignedid;//身份證號(hào),8位數(shù)字,第一位不為0參考程序運(yùn)行結(jié)果:★程序及運(yùn)行結(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;//編號(hào),4位數(shù)字,第一位為1 charsex;//性別,m為男,w為女 Datebirthday;//出生日期 unsignedid;//身份證號(hào),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<<"輸入編號(hào):";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<<"輸入身份證號(hào):";cin>>d; p1.Setid(d); cout<<"\n輸入下
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年山東省護(hù)資試題及答案
- 2025年java 開發(fā)算法面試題及答案
- 2025年針刺傷的測(cè)試題及答案
- 2025年腦力小游戲測(cè)試題及答案
- 2025年函授學(xué)位考試試題及答案
- 2025年銀行柜員面試試題及答案
- 2025年南豐美術(shù)面試題及答案
- 2025年今年地理考試題及答案
- 2025年綜合能力面試題型及答案
- 2025年美團(tuán)營(yíng)銷筆試試題及答案
- 眼科與視功能檢查屈光參差課件
- GB/T 6433-2025飼料中粗脂肪的測(cè)定
- 2025年湖南司法警官職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫學(xué)生專用
- 2025年贛西科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫帶答案
- 急性ST段抬高型心肌梗死溶栓治療專家共識(shí)2024解讀
- 電影《哪吒之魔童降世》主題班會(huì)
- 四川德陽歷年中考語文文言文閱讀試題12篇(含答案與翻譯)(截至2024年)
- 10以內(nèi)加減法口算趣味學(xué)習(xí)500題(可打?。?/a>
- 合唱之美知到智慧樹章節(jié)測(cè)試課后答案2024年秋山東航空學(xué)院
- 人工智能應(yīng)用概論(第2版) 教案全套 莫少林
- 食品安全演練預(yù)案及流程
評(píng)論
0/150
提交評(píng)論