C++实验二--封装性.doc_第1页
C++实验二--封装性.doc_第2页
C++实验二--封装性.doc_第3页
C++实验二--封装性.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验二 封装性(1)一、 实验目的1. 掌握类的定义和使用。2. 掌握类的定义和对象的声明。3. 复习具有不同访问属性的成员的访问方式。4. 观察构造函数和析构函数的执行过程。5. 使用VC+的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。二、 实验任务定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU_Rank,定义为enum CPU_RankP1=1,P2,P3,P4,P5,P6,P7,frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数、析构函数、成员函数的调用顺序,在报告中写明,并说明构造函数和析构函数是何时调用的,是显式调用还是隐式调用的?三、 实验步骤1. 首先定义枚举类型CPU_Rank, enum CPU_Rank P1=1,P2,P3,P4,P5,P6,P7,再定义CUP类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,定义成员函数run、stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示信息。在主程序中定义一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。程序名:lab2.cpp。2. 使用debug调试功能观察程序lab2.cpp的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。3. 调试操作步骤如下:(1) 单击Build | Start Debug | Step Into命令,或按下快捷键F11,系统进入单步执行状态,程序开始运行,一个DOS窗口出现,此时Visual Studio中光标停在main()函数的入口处,此时打开控制台窗口看看屏幕显示情况;(2) 从Debug菜单或Debug工具栏中单击Step Into(F11),此时,光标下移,程序准备执行CPU对象的初始化;(3) 单击Step Into,程序准备执行CUP类的构造函数;(4) 连续单击Step Into,观察构造函数的执行情况,直到执行完构造函数,然后程序会去执行一些系统自定义的函数,没必要跟踪系统函数,单击Step Over(ShiftF11)返回,继续单击Step Into(F11)跟踪自定义函数;如又遇到跟踪系统函数的情况则同样单击Step Over(ShiftF11)返回,直到程序回到主函数,此时打开控制台窗口看看屏幕显示情况。(5) 继续按Step Into,此时程序准备执行CPU对象的run()函数,单击Step Into,程序进入run()成员函数,如遇跟踪系统函数的情况同样单击Step Over,直到回到自编的程序,执行完run()成员函数后,打开控制台窗口看看屏幕显示情况;(6) 继续跟踪程序,参照上述的方法,观察程序的执行顺序,直到程序结束(调用完析构函数),加深对类的构造函数、析构函数、成员函数的执行顺序的认识;四、 参考程序Lab2.cpp程序:#include 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=P1, int f=2, float v=3)rank = r;frequency = f;voltage = v;cout 构造了一个CPU! endl;CPU () cout 析构了一个CPU! endl; CPU_Rank GetRank() return rank; int GetFrequency() return frequency; float GetVoltage() return voltage; void SetRank(CPU_Rank r) rank = r; void SetFrequency(int f) frequency = f; void SetVoltage(float v) voltage = v; void Run() cout CPU开始运行! endl; void Stop() cout CPU停止运行! endl; ;void main()CPU a(P6,300,2.8);a.Run();a.Stop();实验三 封装性(2)一、实验目的1. 掌握类的定义和使用。2. 掌握类的定义和对象的声明。3. 复习具有不同访问属性的成员的访问方式。4. 观察构造函数和析构函数的执行过程。5. 使用VC+的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。二、实验任务定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。定义并实现这个类。三、实验步骤1. 首先定义CPU类(可使用上面的CPU类)、RAM类、CDROM类。再定义Computer类:定义私有数据成员cpu、ram、cdrom,其中cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,定义公有成员函数run、stop,可在其中输出提示信息。在主程序中定义一个Computer的对象,调用其成员函数,观察类对象及其成员变量的构造与析构顺序,以及成员函数的调用。程序名:lab3.cpp。2. 使用debug调试功能观察lab3.cpp程序的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序,特别注意观察成员变量的构造与析构顺序,在报告上写明执行结果,并回答以下问题。(1)建立对象时是先执行对象a的类(COMPUTER类)的构造函数还是先执行其数据成员对象的类(CPU类、RAM类、CDROM类)的构造函数?(2)程序执行完毕销毁对象时,是先执行对象a的类(COMPUTER类)的析构函数还是先执行其数据成员对象的类(CPU类、RAM类、CDROM类)的析构函数?(3)从此程序可以分析出,在面向对象程序中构造函数和析构函数的执行顺序是正好相同还是相反?四、参考程序Lab3.cpp程序:#include (CPU类的程序代码与lab2.cpp中相同,在这里省略。)class RAMpublic: RAM ()cout 构造了一个RAM! endl; RAM () cout 析构了一个RAM! endl; void Run() cout RAM开始运行! endl; void Stop() cout RAM停止运行! endl; ;class CDROMpublic: CDROM ()cout 构造了一个CDROM! endl; CDROM () cout 析构了一个CDROM! endl; void Run() cout CDROM开始运行! endl; void Stop() cout CDROM停止运行! endl; ;class COMPUTERprivate:CPU cpu;RAM ram;CDROM cdrom;public:COMPUTER()cout 构造了一个COMPUTER! endl;COMPUTER () cout 析构了一个COMPUTER!

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论