实验一类与对象一、实验目的1.掌握类的定义和使用。2.掌握类的对象的声明。3.复习具有不同访问属性的成员的访问方式。4.观察构造函数和析构函数的执行过程。5.使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。二、实验课时4学时三、实验任务1.定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run(提示信息“CPU开始运行”)、stop(提示信息“CPU停止运行”)。其中,为枚举类型CPU_Rank,定义为enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。在main函数中定义该类的一个对象,并调用其公有成员函数,观察构造函数和析构函数的调用顺序。试试能不能在主函数中打印该对象的属性值,并分析原因。2.在上述CPU类中添加成员函数,分别用于设置及获取各属性的值,并在main函数中调用这些函数。观察当这些函数被设置成private或public时会有什么不同。3.定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象。CPU类的定义为实验任务1,RAM、CDROM类可以自由设置一些属性,并提供类似的run、stop这两个成员函数。在main函数中测试这个类,分析成员函数的运行顺序。4.定义一个Point类,属性为坐标X、Y的值,包含有如下成员函数:构造函数、析构函数、设置与获取X和Y的值的函数,并测试程序的输出结果。#includeiostream#includestdlib.husingnamespacestd;/*1.定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run(提示信息“CPU开始运行”)、stop(提示信息“CPU停止运行”)。其中,为枚举类型CPU_Rank,定义为enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。在main函数中定义该类的一个对象,并调用其公有成员函数,观察构造函数和析构函数的调用顺序。试试能不能在主函数中打印该对象的属性值,并分析原因。2.在上述CPU类中添加成员函数,分别用于设置及获取各属性的值,并在main函数中调用这些函数。观察当这些函数被设置成private或public时会有什么不同。3.定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象。CPU类的定义为实验任务1,RAM、CDROM类可以自由设置一些属性,并提供类似的run、stop这两个成员函数。在main函数中测试这个类,分析成员函数的运行顺序。4.定义一个Point类,属性为坐标X、Y的值,包含有如下成员函数:构造函数、析构函数、设置与获取X和Y的值的函数,并测试程序的输出结果。*/enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};classCPU{public:CPU();~CPU();voidset_CPU(CPU_Rankr,intfreq,floatv);voidget_CPU();voidrun();voidstop();private:CPU_Rankrank;intfrequency;floatvoltage;};voidCPU::run(){coutCPUrunendl;}voidCPU::stop(){coutCPUstopendl;}voidCPU::set_CPU(CPU_Rankr,intf,floatv){rank=r;frequency=f;voltage=v;}voidCPU::get_CPU(){coutCPUCPU_Rank=rankendl;coutCPUfrequency=frequencyMHzendl;coutCPUvoltage=voltageendl;}CPU::CPU(){coutCPU构造函数endl;}CPU::~CPU(){coutCPU析构函数endl;}classRAM{public:RAM();~RAM();voidrun();voidstop();voidset_size(unsignedints);voidget_size();private:unsignedintsize;};voidRAM::run(){coutRAMrunendl;}voidRAM::stop(){coutRAMstopendl;}voidRAM::set_size(unsignedints){size=s;}voidRAM::get_size(){coutRAMsize=sizeendl;}RAM::RAM(){coutRAM构造函数endl;}RAM::~RAM(){coutRAM析构函数endl;}classCDROM{public:CDROM();~CDROM();voidrun();voidstop();voidset_size(unsignedints);voidget_size();private:unsignedintsize;};voidCDROM::run(){coutCDROMrunendl;}voidCDROM::stop(){coutCDROMstopendl;}voidCDROM::set_size(unsignedints){size=s;}voidCDROM::get_size(){coutCDROMsize=endl;}CDROM::CDROM(){coutCDROM构造函数endl;}CDROM::~CDROM(){coutCDROM析构函数endl;}classComputer{public:Computer();~Computer();voidset_PC();voidget_PC();voidrun();voidstop();private:CPUcpu;RAMram;CDROMcdrom;};voidComputer::run(){coutPCrunendl;cpu.run();ram.run();cdrom.run();}voidComputer::stop(){cdrom.stop();ram.stop();cpu.stop();coutPCstopendl;}voidComputer::set_PC(){cpu.set_CPU(P1,2,3.4);ram.set_size(1024);cdrom.set_size(2048);}voidComputer::get_PC(){cpu.get_CPU();ram.get_size();cdrom.get_size();}Computer::Computer(){coutComputer构造函数endl;}Computer::~Computer(){coutComputer析构函数endl;}classPoint{public:Point();~Point();voidsetPoint(intx,inty);voidgetPoint();private:intX,Y;};voidPoint::setPoint(intx,inty){X=x;Y=y;}voidPoint::getPoint(){coutX=Xendl;coutY=Yendl;}Point::Point(){coutPoint构造函数endl;}Point::~Point(){coutPoint析构函数endl;}intmain(){ComputerPC;PC.run();PC.set_PC();PC.get_PC();PC.stop();Pointp;p.setPoint(12,45);p.getPoint();system(pause);return0;}