C.语言程序设计实验答案-类及对象_第1页
C.语言程序设计实验答案-类及对象_第2页
C.语言程序设计实验答案-类及对象_第3页
C.语言程序设计实验答案-类及对象_第4页
C.语言程序设计实验答案-类及对象_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

. - -实验04类与对象(6学时)(第4章类与对象)一、实验目的掌握类的声明和使用。掌握类的声明和对象的声明。复习具有不同访问属性的成员的访问方式。观察构造函数和析构函数的执行过程。学习类的组合使用方法。使用VisualStudio2010的调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。精品文档放心下载二、实验任务4_1声明一个CPU类。包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU_Rank,声明为enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。感谢阅读4_2声明一个简单的puter类。有数据成员芯片(cpu)、存(ram)、光驱(cdrom)等,有两个公有成员函数run和stop。cpu精品文档放心下载CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。感谢阅读4_3声明一个表示时间的结构体。可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。谢谢阅读4_4(习题4-10)设计一个用于人事管理的People(人员)类。谢谢阅读考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号),sex(性别)、birthday(出生日期)、id(号)等。其中“出生日期”声明为一个“日期”类嵌子对象。用成员函数实现人员信息的录入和显示。要求包括:构造函数和析构函数、联成员函数、组合。精品文档放心下载. 可修编. - -三、实验步骤1.(验证)声明一个CPU类,观察构造函数和析构函数的调用顺序。谢谢阅读首先声明枚举类型CPU_Rank,例如enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},再声明CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,声明成员函数run和stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示顺序。在主程序中声明一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。程序名:lab4_1.cpp。(程序见步骤2)精品文档放心下载★程序的运行结果:2.(示例)调试程序文件lab4_1.cpp。使用调试功能观察程序lab4_1.cpp的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。参考程序如下:谢谢阅读//lab4_1.cpp#include<iostream>usingnamespacestd;enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};谢谢阅读classCPU{private:CPU_Rankrank;//数据成员,类中的变量感谢阅读intfrequency;floatvoltage;public:CPU(CPU_Rankr,intf,floatv){//构造函数,对变量初始化精品文档放心下载rank=r;frequency=f;voltage=v;cout<<"构造了一个CPU!"<<endl;}~CPU(){cout<<"析构了一个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;}谢谢阅读voidrun(){cout<<"CPU开始运行!"<<endl;}//其他成员函数,根据情况给出voidstop(){cout<<"CPU停止运行!"<<endl;}精品文档放心下载};//const声明为常成员函数,禁止改变对象的数据成员的值谢谢阅读voidmain(){CPUa(P6,300,2.8);a.run();a.stop();}3.(操作)调试操作步骤如下:单击“调试|逐语句”命令,系统进行单步执行状态,程序开始运行,一个DOS窗口出现,此时VisualStudio中光标停在main()函数的入口处。精品文档放心下载单击“调试|逐过程”,此时,光标下移,程序准备执行CPU对象的初始化。感谢阅读单击“调试|逐语句”,程序准备执行CPU类的构造函数。精品文档放心下载. 可修编. - -连续单击“调试|逐过程”,观察构造函数的执行情况,直到执行完构造函数,程序回到主函数,光标停在“a.run();”行前。谢谢阅读此时程序准备执行CPU对象的run()方法,单击“调试|逐语句”,程序进入run()成员函数,连续单击“调试|逐过程”,直到光标停在“a.stop();”行前。感谢阅读继续执行程序,参照上述的方法,观察程序的执行顺序,加深对类的构造函数、析构函数、成员函数的执行顺序的认识。精品文档放心下载单击StepInto,进入~CPU()析构函数,连续单击“调试|逐过程”,直到光标又停在main()函数的“}”行前。精品文档放心下载将光标移到main()函数的“}”后,右击,再单击“运行到光标处”,运行结束。谢谢阅读再试试“调试”菜单栏中别的菜单项,熟悉调试的各种方法。感谢阅读4.(编程)声明CPU类、RAM类以及CDROM类。再声明puter类,观察类精品文档放心下载对象及其成员变量的构造与析构顺序,以及成员函数的调用。感谢阅读首先声明CPU类(可使用lab4_1.cpp中声明的CPU类)、RAM类以及CDROM类。再声感谢阅读puter类:声明私有数据成员cpu、ram、cdrom,声明公有成员函数run、stop,可在其中输出提示信息。在主程序中声明一个puter的对象,调用其成员函数,观察类对象及其成员变量的构造与析构顺序,以及成员函数的调用。程序名:lab4_2.cpp。精品文档放心下载提示:RAM类中有一个数据成员(intramtype;);CDROM类中有一个数据成员(intcdromtype;);精品文档放心下载为了观察程序执行的顺序,类似程序lab4_1.cpp,在构造函数、析构函数、run和stop函数中应包含一条输出语句,给出相关的信息;谢谢阅读每个类中至少包括:数据成员、构造函数、析构函数、取值成员函数、赋值成员函数。谢谢阅读程序及运行结果://lab4_2.cpp#include<iostream>usingnamespacestd;enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};//声明枚举类型CPU_Rank感谢阅读classCPU{//声明类CPUprivate:CPU_Rankrank;intfrequency;floatvoltage;public:CPU(CPU_Rankr,intf,floatv){感谢阅读rank=r;frequency=f;voltage=v;cout<<"构造了一个CPU!"<<endl;. 可修编. - -}~CPU(){cout<<"析构了一个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<<"构造了一个RAM!"<<endl;}~RAM(){cout<<"析构了一个RAM!"<<endl;}谢谢阅读intGetramtype()const{returnramtype;}精品文档放心下载voidSetramtype(intr){ramtype=r;}感谢阅读};classCDROM{//声明类CDROMprivate:intcdromtype;public:CDROM(intcd=0){cdromtype=cd;cout<<"构造了一个CDROM!"<<endl;谢谢阅读}~CDROM(){cout<<"析构了一个CDROM!"<<endl;}精品文档放心下载intGetcdromtype()const{returncdromtype;}谢谢阅读voidSetcdromtype(intc){cdromtype=c;}谢谢阅读};classPUTER{//声明类PUTERprivate:CPUcpu;RAMram;CDROMcdrom;public:PUTER(CPU_Rankr,intf,floatv,intra,intcd)精品文档放心下载:cpu(r,f,v),ram(ra),cdrom(cd)精品文档放心下载. 可修编. - -{cout<<"构造了一个PUTER!"<<endl;}感谢阅读~PUTER(){cout<<"析构了一个PUTER!"<<endl;}谢谢阅读voidrun(){cout<<"PUTER开始运行!"<<endl;}感谢阅读voidstop(){cout<<"PUTER停止运行!"<<endl;}谢谢阅读};voidmain(){PUTERa(P6,300,2.8,2,500);感谢阅读a.run();a.stop();}5.(操作)调试程序lab4_2.cpp。使用调试功能观察lab4_2.cpp程序的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序,特别注意观察成员变量的构造与析构顺序。谢谢阅读6.编程,习题2-31)声明一个表示时间的结构体。谢谢阅读声明一个表示时间的结构体,可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。感谢阅读建立一个项目lab4_3,包含一个C++源程序lab4_3.cpp。在主程序中实现输入输出。谢谢阅读参考运行结果:★程序及运行结果://lab4_3.cpp(习题2-31)#include<iostream>usingnamespacestd;. 可修编. - -structtime{shortyy,mm,dd,hh,mi,ss;};voidmain(){timet1={2012,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<<"输入小时:";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.(编程,习题4-10)设计一个用于人事管理的People(人员)类。精品文档放心下载People的属性:number(编号),sex(性别)、birthday(出生日期)、id(号)等。其中“出生日期”声明为一个“日期”类嵌子对象。精品文档放心下载用成员函数实现人员信息的录入和显示。要求包括:构造函数和析构函数、联成员函感谢阅读数、组合。程序名:lab4_4.cpp。提示:构造函数和析构函数的函数体可以定义为空;两个类中对年、月和日分别定义取值和赋值成员函数;People类中的数据成员为:unsignednumber;//编号,4位数字,第一位为1精品文档放心下载charsex;//性别,m为男,w为女Datebirthday;//出生日期unsignedid;//号,8位数字,第一位不为0感谢阅读参考程序运行结果:. 可修编. - -★程序及运行结果://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;//编号,4位数字,第一位为1谢谢阅读charsex;//性别,m为男,w为女Datebirthday;//出生日期unsignedid;//号,6位数字,第一位不为0精品文档放心下载public: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;//输入p1cout<<"输入编号:";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<<"输入号:";cin>>d;p1.Setid(d)

温馨提示

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

评论

0/150

提交评论