




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、實驗二類與對象(二)一、 實驗目的1 掌握類的定義和使用。2 掌握類的對象的聲明。3 復習具有不同訪問屬性的成員的訪問方式。4 觀察構造函數(shù)和析構函數(shù)的執(zhí)行過程。5 使用VC+的debug調試功能觀察程序流程,跟蹤觀察類的構造函數(shù)、析構函數(shù)、成員函數(shù)的執(zhí)行順序。二、 實驗課時4學時三、 實驗任務1定義一個CPU類,包含等級(rank)、頻率(frequency)、電壓(voltage)等屬性,有兩個公有成員函數(shù)run(提示信息“CPU開始運行”)、stop(提示信息“CPU停止運行”)。其中,為枚舉類型CPURank,定義為enum CPU_RankP1=1,P2,P3,P4,P5,P6,P7
2、,frequency為單位是MHz的整型數(shù),voltage為浮點型的電壓值。在main函數(shù)中定義該類的一個對象,并調用其公有成員函數(shù),觀察構造函數(shù)和析構函數(shù)的調用順序。試試能不能在主函數(shù)中打印該對象的屬性值,并分析原因。2在上述CPU類中添加成員函數(shù),分別用于設置及獲取各屬性的值,并在main函數(shù)中調用這些函數(shù)。觀察當這些函數(shù)被設置成private或public時會有什么不同。3定義一個簡單的Computer類,有數(shù)據(jù)成員芯片(cpu)、內(nèi)存(ram)、光驅(cdrom)等,有兩個公有成員函數(shù)run、stop。cpu為CPU類的一個對象,ram為RAM類的一個對象,cdrom為CDROM類的一
3、個對象。CPU類的定義見實驗任務1,RAM、CDROM類可以自由設置一些屬性,并提供類似的run、stop這兩個成員函數(shù)。在main函數(shù)中測試這個類,分析成員函數(shù)的運行順序。4定義一個Point類,屬性為坐標X、Y的值,包含有如下成員函數(shù):構造函數(shù)、析構函數(shù)、拷貝構造函數(shù)、設置與獲取X和Y的值的函數(shù),并測試之。四、 實驗步驟1首先定義枚舉類型CPU_Rank,再定義CPU類,包含等級、頻率、電壓等私有數(shù)據(jù)成員,定義成員函數(shù)run、stop,用來輸出提示信息,在構造函數(shù)和析構函數(shù)中也可以輸出提示信息。在主程序中定義一個CPU的對象,調用其成員函數(shù),觀察類對象的構造與析構順序,以及成員函數(shù)的調用。
4、示例程序lab4_1.cpp代碼如下:#include <iostream.h>enum CPU_Rank P1=1,P2,P3,P4,P5,P6,P7;class 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 << "析構了一個C
5、PU!" << endl; void Run() cout << "CPU開始運行!" << endl; void Stop() cout << "CPU停止運行!" << endl; ;void main()CPU a(P6,300,2.8);a.Run();a.Stop();2使用debug調試功能觀察程序lab4_1.cpp的運行流程,跟蹤觀察類的構造函數(shù)、析構函數(shù)、成員函數(shù)的執(zhí)行順序。調試方法參考前面的介紹。3測試能否在main函數(shù)中獲取類的對象的屬性值,并分析原因。為CPU類
6、添加一些函數(shù),以設置和獲取類的對象的屬性的值,如用GetRank獲取rank的值,用SetRank設置rank的值。并在主函數(shù)中測試它們。分別將這些函數(shù)設置成private或public,看看結果如何,進而分析成員的不同訪問屬性的差別。4首先定義CPU類、RAM類、CDROM類。再定義computer類:定義私有數(shù)據(jù)成員cpu、ram、cdrom,定義公有成員函數(shù)run、stop,可在其中輸出提示信息。在主程序中定義一個computer的對象,調用其成員函數(shù),觀察類對象及其成員的構造與析構順序,以及成員函數(shù)的調用。并使用debug功能觀察程序的運行流程。示例程序lab4_2.cpp代碼如下:#
7、include <iostream.h>enum CPU_Rank P1=1,P2,P3,P4,P5,P6,P7;class 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!" << end
8、l;CPU () cout << "析構了一個CPU!" << endl; void Run() cout << "CPU開始運行!" << endl; void Stop() cout << "CPU停止運行!" << endl; ;class RAMpublic: RAM ()cout << "構造了一個RAM!" << endl; RAM () cout << "析構了一個RAM!"
9、 << endl; void Run() cout << "RAM開始運行!" << endl; void Stop() cout << "RAM停止運行!" << endl; ;class CDROMpublic: CDROM ()cout << "構造了一個CDROM!" << endl; CDROM () cout << "析構了一個CDROM!" << endl; void Run() cout &l
10、t;< "CDROM開始運行!" << endl; void Stop() cout << "CDROM停止運行!" << endl; ;class COMPUTERprivate:CPU cpu;RAM ram;CDROM cdrom;public:COMPUTER()cout << "構造了一個COMPUTER!" << endl;COMPUTER () cout << "析構了一個COMPUTER!" << endl;
11、void Run() cout << "COMPUTER開始運行!" << endl;cpu.Run();ram.Run();void Stop() ram.Stop();cpu.Stop();cout << "COMPUTER停止運行!" << endl; ;void main()COMPUTER a;a.Run();a.Stop();5定義類Point,并測試之。用Debug功能跟蹤構造函數(shù)的調用。示例程序lab4_2.cpp代碼如下:#include <iostream.h>class P
12、ointprivate:int X,Y;public:Point(int xx=0,int yy=0)X=xx;Y=yy;Point(Point &p);int GetX() return X;int GetY() return Y;Point:Point(Point &p)X=p.X;Y=p.Y;cout<<"拷貝構造函數(shù)被調用"<<endl;void main(void)Point A(4,5);Point B(A);cout<<A.GetX()<<endl;cout<<B.GetX()<
13、<endl;實驗三繼承與派生一、 實驗目的1 學習定義和使用類的繼承關系,定義派生類。2 理解類的訪問控制與類的成員訪問的關系。3 熟悉不同繼承方式下對基類成員的訪問控制。4 學習利用虛基類解決二義性問題。二、 實驗課時4學時三、 實驗任務1定義一個基類Animal,有私有整形成員變量age,構造其派生類dog,在其成員函數(shù)SetAge(int n)中直接給age賦值,看看會有什么問題,把age改為公有成員變量,還會有問題嗎?改為保護類型呢?改變繼承方式呢?2通過在上例的構成函數(shù)、析構函數(shù)中添加提示信息,或用debug調試功能觀察構造函數(shù)和析構函數(shù)的執(zhí)行情況,并分析原因。3定義一個車(v
14、ehicle)基類,具有MaxSpeed、Weight等成員變量,Run、Stop等成員函數(shù),由此派生出自行車(bicycl)類、汽車(motorcar)類。自行車類有高度(Height)等屬性,汽車類有座位數(shù)(SeatNum)等屬性。從和派生出摩托車(motorcycle)類,在繼承過程中注意把設置為虛基類。如果不把vehice設置為虛基類,會有什么問題?并分析原因。四、 實驗步驟1編寫程序定義基類Animal,成員變量age定義為私有的。構造派生類dog,在其成員函數(shù)SetAge(int n)中直接對age賦值時,會出現(xiàn)錯誤提示。試著將age分別改為公有的、保護類型,再看看會有什么不同。試
15、著在main函數(shù)中直接給age賦值,看看又會有什么問題?怎么才能避免這種問題的出現(xiàn)。深入認識三種訪問控制的異同。示例程序Lab7_1.cpp代碼如下:#include <iostream.h>class Animalpublic: /可修改為private,protectedint age;public: Animal();Animal();class Dog : private Animal /可修改為public,protected public:Dog();Dog();void SetAge(int n) age = n;void main()Dog a;a.SetAge(1
16、0);2修改上例,以方便跟蹤基類和派生類的構造函數(shù)、析構函數(shù)的執(zhí)行情況。3按任務3要求編寫程序代碼。分別測試vehicle定義為虛基類與非虛基類的情況。用debug跟蹤基類和派生類的構造函數(shù)、析構函數(shù)的執(zhí)行情況。示例程序Lab7_2.cpp代碼如下:#include <iostream.h>class vehicleprivate:int MaxSpeed;int Weight;public: vehicle()MaxSpeed=0; Weight=0;vehicle();void Run() cout << "Now it is running!" << endl; void Stop() cout << "Now it has stopped!" << endl; ;class bicycle : virtual public vehicle private:int Height;public:bicycle();bicycle();class motorcar : virtual public vehi
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智研咨詢發(fā)布:2024年中國開關柜行業(yè)競爭格局及發(fā)展前景研究報告
- 《木蘭詩》知識點
- 2024年榆林能源科技職業(yè)學院輔導員考試真題
- 2024年內(nèi)蒙古巴彥淖爾臨河區(qū)鴻文實驗中學招聘真題
- 2024年巴彥淖爾市臨河區(qū)婦幼保健院招聘真題
- 四川省樂山市2025屆第三次調查研究考試數(shù)學試題
- 廣西幼師《學前美術教育》課程標準
- 2025年二手電商信用體系建設與行業(yè)規(guī)范研究報告
- 藥物合成過程中的環(huán)境保護行業(yè)跨境出海項目商業(yè)計劃書
- 企業(yè)融資咨詢行業(yè)深度調研及發(fā)展項目商業(yè)計劃書
- 人教版四年級數(shù)學上冊全冊電子教案
- 人防工程竣工驗收質量自評報告
- 《未來三年個人規(guī)劃》課件
- 湖北省華中師大第一附中2024屆物理高二第二學期期末達標檢測試題含解析
- 2024年四川廣安愛眾股份有限公司招聘筆試參考題庫含答案解析
- 冠心病合并糖尿病血脂管理
- 二單元稅率利率復習課
- 安全防護及文明施工措施
- 曲黎敏從頭到腳說健康讀書筆記
- 人民防空工程防護設備質量保修書國內(nèi)外標準規(guī)范
- 建筑物拆除施工方案PPT模板
評論
0/150
提交評論