版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
./實驗三類與對象實驗?zāi)康?.掌握類的定義和使用2.掌握類的定義和對象的聲明3.復(fù)習(xí)具有不同訪問屬性的成員的訪問方式4.觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行過程5.學(xué)習(xí)類的組合使用方法6.使用VC++的debug調(diào)試功能觀察程序流程,跟蹤觀察類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序。2.實驗要求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)用順序。2.定義一個簡單的Computer類,有數(shù)據(jù)成員芯片〔cpu、內(nèi)存〔ram、光驅(qū)〔cdrom等等,有兩個公有成員函數(shù)run、stop。cpu為CPU類的一個對象,ram為RAM類的一個對象,cdrom為CDROM類的一個對象,定義并實現(xiàn)這個類。3.〔選做設(shè)計一個用于人事管理的People<人員>類??紤]到通用性這里只抽象出所有類型人員都具有的屬性:number〔編號、sex〔性別、birthday〔出生日期、id〔身份證號等等。其中"出生日期"定義為一個"日期"類內(nèi)嵌子對象。用成員函數(shù)實現(xiàn)對人員信息的錄入和顯示。要求包括:構(gòu)造函數(shù)和析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、內(nèi)聯(lián)成員函數(shù)、組合。3.實驗內(nèi)容1.首先定義枚舉類型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)用。程序名:lab4_1.cpp2.使用debug調(diào)試功能觀察程序lab4_1.cpp的運行流程,跟蹤觀察類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序。3.調(diào)試操作步驟如下:1單擊Build|StartDebug|StepInto命令,或按下快捷鍵F11,系統(tǒng)進入單步執(zhí)行狀態(tài),程序開始運行,一個DOS窗口出現(xiàn),此時VisualStudio中光標(biāo)停在main<>函數(shù)的入口處;2從Debug菜單或Debug工具欄中單擊StepOver,此時,光標(biāo)下移,程序準(zhǔn)備執(zhí)行CPU對象的初始化;3單擊StepInto,程序準(zhǔn)備執(zhí)行CPU類的構(gòu)造函數(shù);4連續(xù)單擊StepOver,觀察構(gòu)造函數(shù);5此時程序準(zhǔn)備執(zhí)行CPU對象的run<>函數(shù),單擊StepInto,程序進入run<>成員函數(shù),連續(xù)單擊StepOver,直到回到main<>函數(shù)。6繼續(xù)執(zhí)行程序,參照上述的方法,觀察程序的執(zhí)行順序,加深對類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序的認識。7再試試Debug菜單欄中別的菜單項,熟悉Debug的各種方法。4.首先定義CPU類〔可使用第二題中的CPU類、RAM類、CDROM類。再定義Computer類;定義私有數(shù)據(jù)成員cpu、ram、cdrom,定義公有成員函數(shù)run、stop,可在其中輸出提示信息。在主程序中定義一個Computer的對象,調(diào)用其成員函數(shù),觀察類對象及其成員變量的構(gòu)造與析構(gòu)順序,以及成員函數(shù)的調(diào)用。程序名:lab4_2.cpp.使用debug調(diào)試功能觀察lab4_2.cpp程序的運行流程,跟蹤觀察類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序,特別注意觀察成員變量的構(gòu)造與析構(gòu)順序。4.思考題:1.如何定義一個類?class類名稱{public:外部接口protected:保護型成員private:私有成員};2.如何定義類的構(gòu)造函數(shù)和析構(gòu)函數(shù)?class類名稱{public:類名〔形參表;//構(gòu)造函數(shù)聲明類名〔類名&對象名;//拷貝構(gòu)造函數(shù)聲明~類名〔;//析構(gòu)函數(shù)聲明……};類名::類名〔形參表//構(gòu)造函數(shù)實現(xiàn){函數(shù)體}類名::類名〔類名&對象名//拷貝構(gòu)造函數(shù)實現(xiàn){函數(shù)體}類名::~類名〔//析構(gòu)函數(shù)實現(xiàn){函數(shù)體}3.類的各成員函數(shù)的執(zhí)行順序是怎樣的?成員函數(shù)只有被調(diào)用時才會執(zhí)行。4.類組合時對象的構(gòu)造順序是怎樣的?當(dāng)創(chuàng)建一個類對象時,如果類中具有內(nèi)嵌對象成員,那么各個內(nèi)嵌對象將首先被自動創(chuàng)建。因此在構(gòu)造數(shù)據(jù)成員時,首先調(diào)用內(nèi)嵌對象的構(gòu)造函數(shù),調(diào)用順序按照內(nèi)嵌對象在組合類的定義中出現(xiàn)的次序,之后再執(zhí)行本類構(gòu)造函數(shù)的函數(shù)體,對本類的數(shù)據(jù)成員進行構(gòu)造。5.源程序1.lab4_1.cpp#include<iostream>usingnamespacestd;enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};classCPU{private: CPU_Rankrank; intfrequency; floatvoltage;public: //構(gòu)造函數(shù) CPU<CPU_Rankr,intf,floatv> { rank=r; frequency=f; voltage=v; cout<<"構(gòu)造了一個CPU!"<<endl; } //拷貝構(gòu)造函數(shù) CPU<CPU&p> { rank=p.rank; frequency=p.frequency; voltage=p.voltage; cout<<"拷貝構(gòu)造了一個CPU!"<<endl; } //析構(gòu)函數(shù) ~CPU<>{cout<<"析構(gòu)了一個CPU!"<<endl;} //get CPU_RankGetRank<>{returnrank;} intGetFrequency<>{returnfrequency;} floatGetVoltage<>{returnvoltage;} //set voidSetRank<CPU_Rankr>{rank=r;} voidSetFrequency<intf>{frequency=f;}voidSetVoltage<floatv>{voltage=v;}voidRun<>{cout<<"CPU開始運行!"<<endl;} voidStop<>{cout<<"CPU停止運行!"<<endl;}};voidmain<>{ CPUa<P6,300,2.8>; a.Run<>; a.Stop<>; CPUb<a>; b.Run<>; b.Stop<>;}lab4_2.cpp#include<iostream>usingnamespacestd;enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};enumRAM_Rank{G1=1,G2,G4,G8};enumCDROM_Speed{X24=1,X36,X40,X50};enumCDROM_Rank{M700=1,M750,M800};classCPU{private: CPU_Rankrank; intfrequency; floatvoltage;public: //構(gòu)造函數(shù) CPU<CPU_Rankr,intf,floatv> { rank=r; frequency=f; voltage=v; cout<<"構(gòu)造了一個CPU!"<<endl; } //拷貝構(gòu)造函數(shù) CPU<CPU&p> { rank=p.rank; frequency=p.frequency; voltage=p.voltage; cout<<"拷貝構(gòu)造了一個CPU!"<<endl; } //析構(gòu)函數(shù) ~CPU<>{cout<<"析構(gòu)了一個CPU!"<<endl;} //get CPU_RankGetRank<>{returnrank;} intGetFrequency<>{returnfrequency;} floatGetVoltage<>{returnvoltage;} //set voidSetRank<CPU_Rankr>{rank=r;} voidSetFrequency<intf>{frequency=f;}voidSetVoltage<floatv>{voltage=v;}};classRAM{private: RAM_RankramRank; floatspeed;public: //構(gòu)造函數(shù) RAM<RAM_Rankr,floats> { ramRank=r; speed=s; cout<<"構(gòu)造了一個RAM!"<<endl; } //拷貝構(gòu)造函數(shù) RAM<RAM&p> { ramRank=p.ramRank; speed=p.speed; cout<<"拷貝構(gòu)造了一個RAM!"<<endl; } //析構(gòu)函數(shù) ~RAM<>{cout<<"析構(gòu)了一個RAM!"<<endl;} //get RAM_RankgetRank<>{returnramRank;} floatgetSpeed<>{returnspeed;} //set voidsetRank<RAM_Rankr>{ramRank=r;}voidsetSpeed<floats>{speed=s;}};classCDROM{private: CDROM_SpeedcdromSpeed; CDROM_RankcdromRank;public: //構(gòu)造函數(shù) CDROM<CDROM_Rankr,CDROM_Speeds> { cdromRank=r; cdromSpeed=s; cout<<"構(gòu)造了一個CDROM!"<<endl; } //拷貝構(gòu)造函數(shù) CDROM<CDROM&p> { cdromRank=p.cdromRank; cdromSpeed=p.cdromSpeed; cout<<"拷貝構(gòu)造了一個CDROM!"<<endl; } //析構(gòu)函數(shù) ~CDROM<>{cout<<"析構(gòu)了一個CDROM!"<<endl;} //get CDROM_RankgetRank<>{returncdromRank;} CDROM_SpeedgetSpeed<>{returncdromSpeed;} //set voidsetRank<CDROM_Rankr>{cdromRank=r;}voidsetSpeed<CDROM_Speeds>{cdromSpeed=s;}};classComputer{private: CPUcpu; RAMram; CDROMcdrom;public: //構(gòu)造函數(shù) Computer<CPUc,RAMr,CDROMcd> :cpu<c>,ram<r>,cdrom<cd> { cout<<"構(gòu)造了一個Computer!"<<endl; } //拷貝構(gòu)造函數(shù) Computer<Computer&p> :cpu<p.cpu>,ram<p.ram>,cdrom<p.cdrom> { cout<<"拷貝構(gòu)造了一個Computer!"<<endl; } //析構(gòu)函數(shù) ~Computer<>{cout<<"析構(gòu)了一個Computer!"<<endl;} voidRun<inta>{cout<<"Computer"<<a<<"開始運行!"<<endl;} voidStop<inta>{cout<<"Computer"<<a<<"停止運行!"<<endl;}};voidmain<>{ CPUcpu1<P6,300,2.8>; RAMram1<G4,200>; CDROMcdrom1<M800,X50>; Computercomputer1<cpu1,ram1,cdrom1>; computer1.Run<1>; computer1.Stop<1>; Computercomputer2<computer1>; computer2.Run<2>; computer2.Stop<2>;}3.lab4_3.cpp#include<iostream>#include<cstring>usingnamespacestd;classDate{private: intyear; intmonth; intday;public: Date<>; Date<inty,intm,intd>; Date<Date&p>; ~Date<>; voidsetDate<>; voidshowDate<>;};classPeople{private: intnumber; charsex[8]; Datebirthday; charid[25];public: People<>; People<intn,char*s,Dateb,char*i>; People<People&p>; ~People<>; voidsetNumber<>; voidsetSex<>; voidsetId<>; voidshowPeople<>;};//Date構(gòu)造函數(shù)Date::Date<>{}Date::Date<inty,intm,intd> { year=y; month=m; day=d; }Date::Date<Date&p>{ year=p.year; month=p.month; day=p.day;}Date::~Date<>{}//Date成員函數(shù),設(shè)置出生年月日voidDate::setDate<> { inty,m,d; cout<<"Inputtheyear:"; cin>>y; cout<<"Inputthemonth:"; cin>>m; cout<<"Inputtheday:"; cin>>d; year=y; month=m; day=d; }//Date內(nèi)聯(lián)成員函數(shù),輸出Date信息inlinevoidDate::showDate<> { cout<<"Birthdayis"<<year<<"年"<<month<<"月"<<day<<"日"<<endl; }//People構(gòu)造函數(shù)People::People<>{}People::People<intn,char*s,Dateb,char*i>{ number=n; strcpy<sex,s>; birthday=b; strcpy<id,i>;}People::People<People&p>{ number=p.number;strcpy<sex,p.sex>; birthday=p.birthday; strcpy<id,p.id>;}People::~People<>{}//People成員函數(shù),設(shè)置各類數(shù)據(jù)voidPeople::setNumber<>{ cout<<"Pleaseinputtheperson'snumber:"; cin>>number;}voidPeople::setSex<>{ cout<<"Inputsex:"; cin.getline<sex,8,'\n'>;}voidPeople::setId<>{ cout<<"Inputid:"; cin.getline<id,25,'\n'>;}//People內(nèi)聯(lián)成員函數(shù),輸出人員
溫馨提示
- 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 借款人與出質(zhì)人之間的合同
- 簡易個人分包合同
- 廢止采購合同
- 專業(yè)分包工程合同樣本
- 專業(yè)工程勘察招標(biāo)啟示
- 互聯(lián)網(wǎng)金融交易擔(dān)保協(xié)議
- 土工網(wǎng)帶采購合同
- 技術(shù)服務(wù)合同稅率動態(tài)
- 技術(shù)服務(wù)合同的技術(shù)改進費用標(biāo)準(zhǔn)
- 招標(biāo)文件價格詢價步驟
- 氧化鋁工業(yè)分析化驗手冊
- T∕CIESC 0011-2020 工業(yè)用六甲基二硅氧烷
- UG-POST_Builder后處理構(gòu)造器參考模板
- 蘇教版五年級數(shù)學(xué)上冊第九單元《整理與復(fù)習(xí)》全部教案(共5課時)
- 開放式基金通過交易所認購、申購、贖回系統(tǒng)接口指南-券商
- 四軸臥式鉆孔專用機床液壓系統(tǒng)設(shè)計課程設(shè)計
- GB∕T 309-2021 滾動軸承 滾針
- 法務(wù)部管理規(guī)章制度.doc
- 手機整機結(jié)構(gòu)設(shè)計規(guī)范
- “一步法”煤基直接還原技術(shù)探討
- 道路運輸從業(yè)人員從業(yè)資格管理檔案轉(zhuǎn)籍申請表
評論
0/150
提交評論