版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+语言程序设计实验答案 - 类 与对象 实验 04 类与对象( 6 学时) (第 4 章 类与对象) 一、实验目的 (1) 掌握类的声明和使用。 (2) 掌握类的声明和对象的声明。 (3) 复习具有不同访问属性的成员的访问方 式。 (4) 观察构造函数和析构函数的执行过程。 (5) 学习类的组合使用方法。 (6) 使用 Visual Studio 2010 的调试功能观 察程序流程,跟踪观察类的构造函数、 析构函数、 成员函数的执行顺序。 二、实验任务 4_1 声明一个 CPU 类。 包含等级 (rank) 、频率 (frequency) 、电压 (voltage)等属性,有两个公有成员函数
2、 run 、stop。 其中,rank 为枚举类型 CPU_Rank ,声明为 enum CPU_Rank P1=1, P2, P3, P4, P5, P6, P7 ; frequency 为单位是 MHz 的整型数, voltage 为 浮点型的电压值。 观察构造函数和析构函数的调 用顺序。 4_2 声明一个简单的 Computer 类。 有数据成员芯片 (cpu)、内存(ram) 、光驱 (cdrom) 等,有两个公有成员函数 run 和 stop。 cpu 为 CPU 类的一个对象, ram 为 RAM 类的 一个对象, cdrom 为 CDROM 类的一个对象, 声明并实现这个类。 4
3、_3 声明一个表示时间的结构体 可以精确表示年、月、日、小时、分、秒; 提示用户输入年、月、日、小时、分、秒的值, 然后完整地显示出来。 4_4(习题 4-10)设计一个用于人事管理的 People(人员)类。 考虑到通用性, 这里只抽象出所有类型人员 都具有的属性: number (编号), sex(性别)、 birthday (出生日期)、id(身份证号)等。其中 “出生日期”声明为一个“日期”类内嵌子对象。用 成员函数实现人员信息的录入和显示。要求包 括:构造函数和析构函数、 内联成员函数、 组合 三、实验步骤 1.(验证)声明一个 CPU 类,观察构造函数和析构函数的调用顺序。 首先声
4、明枚举类型 CPU_Rank ,例如 enum CPU_Rank P1=1, P2, P3, P4, P5, P6, P7 ,再声 明 CPU 类,包含等级 (rank) 、频率 (frequency) 、 电压(voltage)等私有数据成员,声明成员函数 run 和 stop,用来输出提示信息,在构造函数和 析构函数中也可以输出提示顺序。 在主程序中声 明一个 CPU 的对象,调用其成员函数,观察类 对象的构造与析构顺序,以及成员函数的调用。 程序名: lab4_1.cpp。(程序见步骤 2) 程序的运行结果: 2.(示例)调试程序文件 lab4_1.cpp。 使用调试功能观察程序 lab
5、4_1.cpp 的运行 流程,跟踪观察类的构造函数、析构函数、成员 函数的执行顺序。参考程序如下: /lab4_1.cpp #include using namespace std; enum CPU_Rank P1=1,P2,P3,P4,P5,P6,P7 ; class CPU private : CPU_Rank rank; / 数据成员,类中的变量 int frequency; float voltage; public : CPU(CPU_Rank r, int f, float v) / 构造函 数,对变量初始化 rank=r; frequency=f; voltage=v; cou
6、t 构造了一个 CPU! endl; CPU() cout 析 构 了 一 个 CPU ! endl; / 析构函数,清除变量,系统的要 求 CPU_Rank GetRank() const return rank; / 取值成员函数,取变量的值 intGetFrequency() const return frequency; floatGetVoltage()const return voltage; voidSetRank(CPU_Rank r) rank=r; / 赋值成员函数,改变变量的值 void SetFrequency( int f) frequency=f; void Set
7、Voltage( float v) voltage=v; void run() cout CPU 开 始 运 行 ! endl; / 其他成员函数,根据情况给出 void stop() cout CPU 停 止 运 行 ! endl; ; /const 声明为常成员函数, 禁止改变对象的 数据成员的值 void main() CPU a(P6,300,2.8); a.run(); a.stop(); 3.(操作)调试操作步骤如下: (1) 单击 “调试| 逐语句”命令,系统进行单 步执行状态,程序开始运行,一个 DOS 窗 口出现,此时 Visual Studio 中光标停在 main() 函
8、数的入口处。 (2) 单击 “调试| 逐过程”,此时,光标下移, 程序准备执行 CPU 对象的初始化。 (3) 单击 “调试| 逐语句”,程序准备执行 CPU 类的构造函数 (4) 连续单击 “调试| 逐过程”,观察构造函 数的执行情况,直到执行完构造函数,程序 回到主函数,光标停在“ a.run(); ”行前 (5) 此时程序准备执行 CPU 对象的 run() 方法,单击 “调试| 逐语句”,程序进入 run() 成员函数,连续单击 “调试| 逐过程”,直到 光标停在“a.stop();”行前。 (6) 继续执行程序, 参照上述的方法, 观察 程序的执行顺序,加深对类的构造函数、析 构函数
9、、成员函数的执行顺序的认识。 (7) 单击 Step Into ,进入 CPU()析构函数, 连续单击 “调试| 逐过程”,直到光标又停在 main() 函数的“”行前。 (8) 将光标移到 main() 函数的“”后,右击 再单击 “运行到光标处”,运行结束。 (9) 再试试 “调试菜”单栏中别的菜单项,熟 悉调试的各种方法。 10 4.(编程)声明 CPU 类、 RAM 类以及 CDROM 类。再声明 Computer 类, 观察类对象及其成员变量的构造与析构顺序,以及成员函数的调用。 首先声明 CPU 类(可使用 lab4_1.cpp 中声 明的 CPU 类)、RAM 类以及 CDROM
10、 类。再声 明 Computer 类:声明私有数据成员 cpu、ram 、 cdrom ,声明公有成员函数 run 、stop,可在其 中输出提示信息。在主程序中声明一个 Computer 的对象,调用其成员函数,观察类对 象及其成员变量的构造与析构顺序, 以及成员函 数的调用。程序名: lab4_2.cpp 。 提示: RAM 类中有一个数据成员 ( int ramtype; ); CDROM 类中有一个数据成 员( int cdromtype; ); 11 为了观察程序执行的顺序, 类 似程序 lab4_1.cpp ,在构造函数、 析构函数、run 和 stop 函数中应包 含一条输出语句
11、,给出相关的信 息; 每个类中至少包括:数据成 员、构造函数、析构函数、取值成 员函数、赋值成员函数。 程序及运行结果: /lab4_2.cpp #include using namespace std; enum CPU_RankP1=1,P2,P3,P4,P5,P6,P7; / 声明枚举类型 CPU_Rank class CPU / 声明类 CPU 12 private : CPU_Rank rank; int frequency; float voltage; public : CPU(CPU_Rank r, int f, float v) rank=r; frequency=f; vo
12、ltage=v; cout 构造了一个 CPU! endl; CPU() cout 析 构 了 一 个 CPU ! endl; CPU_Rank GetRank() const return rank; intGetFrequency() const return frequency; floatGetVoltage() const return voltage; void SetRank(CPU_Rank r) rank=r; void SetFrequency( int 13 f) frequency=f; void SetVoltage( float v) voltage=v; ; cl
13、ass RAM / 声明类 RAM private : int ramtype; public : RAM( int r=0) ramtype=r; cout 构造了一个 RAM ! endl; RAM() cout 析 构 了 一 个 RAM ! endl; int Getramtype() const return ramtype; void Setramtype( int r) ramtype=r; ; class CDROM / 声明类 CDROM 14 private : int cdromtype; public : CDROM( int cd=0) cdromtype=cd; c
14、out 构造了一个 CDROM ! endl; CDROM() cout 析 构 了 一 个 CDROM ! endl; int Getcdromtype() const return cdromtype; void Setcdromtype (int c) cdromtype=c; ; class COMPUTER / 声明类 COMPUTER private : CPU cpu; RAM ram; CDROM cdrom; 15 public : COMPUTER(CPU_Rank r, int f, float v,int ra, int cd) :cpu(r,f,v),ram(ra),
15、cdrom(cd) cout 构 造 了 一 个 COMPUTER ! endl; COMPUTER() cout 析 构 了 一 个 COMPUTER ! endl; void run() cout COMPUTER 开始运 行! endl; void stop() cout COMPUTER 停止运 行! endl; ; void main() COMPUTER a(P6,300,2.8,2,500); a.run(); a.stop(); 16 5.(操作)调试程序 lab4_2.cpp 使用调试功能观察 lab4_2.cpp 程序的运行 流程,跟踪观察类的构造函数、析构函数、成员 函数
16、的执行顺序, 特别注意观察成员变量的构造 与析构顺序 6. 编程,习题 2-31)声明一个表示时间的结构体。 声明一个表示时间的结构体, 可以精确表示 年、月、日、小时、分、秒;提示用户输入年、 月、日、小时、分、秒的值,然后完整地显示出 来。 17 建立一个项目 lab4_3,包含一个 C+ 源程序 lab4_3.cpp。在主程序中实现输入输出 参考运行结果: 程序及运行结果: /lab4_3.cpp (习题 2-31 ) #include using namespace std; struct time short yy,mm,dd,hh,mi,ss; ; void main() time
17、 t1=2012,2,25,10,30,20; / 赋 初 值 coutt1.yy 年 t1.mm 月 18 t1.dd 日 t1.hh : t1.mi : t1.sse ndl; time t2; coutt2.yy; coutt2.mm; coutt2.dd; coutt2.hh; coutt2.mi; coutt2.ss; coutt2.yy 年 t2.mm 月 t2.dd 日 t2.hh : t2.mi : t2.sse ndl; 19 7.(编程,习题 4-10)设计一个用于人事管理的 People(人员)类 类 People 的属性: number(编号),sex(性 别)、bir
18、thday (出生日期)、id(身份证号)等。 其中“出生日期”声明为一个“日期”类内嵌子 对象。 用成员函数实现人员信息的录入和显示。 要 求包括:构造函数和析构函数、内联成员函数、 组合。程序名: lab4_4.cpp 提示: 构造函数和析构函数的函数 体可以定义为空; 20 两个类中对年、 月和日分别定 义取值和赋值成员函数; People 类中的数据成员为: unsigned number; /编号, 4 位数字,第一位为 1 char sex;/性别, m 为男, w 为女 Date birthday; /出生日期 unsigned id; /身份证号, 8 位 数字,第一位不为 0
19、 参考程序运行结果: 21 程序及运行结果: / lab4_4.cpp #include using namespace std; class Date private : int yy,mm,dd; public : Date() Date() int Getyy() const return yy; int Getmm() const return mm; int Getdd() const return dd; void Setyy( int y) yy=y; void Setmm( int m) mm=m; void Setdd( int d) dd=d; ; class People
20、 private : 22 unsigned number; / 编号,4 位数字, 第一 位为 1 char sex; / 性别, m 为男, w 为女 Date birthday; / 出生日期 unsigned id; / 身份证号, 6 位数字,第一位 不为 0 public : People() People() unsigned Getnumber() return number; char Getsex() return sex; int Getbirthyy() const return birthday.Getyy(); int Getbirthmm() const retu
21、rn birthday.Getmm(); int Getbirthdd() const return birthday.Getdd(); 23 unsigned Getid() return id; void Setnumber( unsigned nu) number=nu; void Setsex( char se) sex=se; void Setbirthyy( int y) birthday.Setyy(y); void Setbirthmm( int m) birthday.Setmm(m); void Setbirthdd( int d) birthday.Setdd(d); void Setid( unsigned d) id=d; ; void main() People p1,p2; unsigned n,d; char s; int yy,mm,dd; / 输入 p1 coutn; 24 p1.Setnumber(n); couts; p1.Setsex
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 木焦油工安全生产意识评优考核试卷含答案
- 锅炉设备试压工岗前安全意识强化考核试卷含答案
- 全向信标、测距仪机务员班组考核知识考核试卷含答案
- 钨钼冶炼工班组考核考核试卷含答案
- 纺织品缝纫工安全意识强化测试考核试卷含答案
- 继电器调整工岗前工作水平考核试卷含答案
- 圆珠笔制造工操作技能评优考核试卷含答案
- 金属材涂层机组操作工安全综合竞赛考核试卷含答案
- 多功能机组操作工安全实践竞赛考核试卷含答案
- 客运船舶驾驶员变革管理知识考核试卷含答案
- 2025年高中音体美考试试题及答案
- 弱电项目安全管理方案
- 钳工知识基础考试题库及答案
- 2025年大学《区域国别学》专业题库- 北京大学的非洲社会与文化研究
- SF-36健康调查简表标准化操作手册(2025年更新版)
- 办公楼中央空调系统维护方案
- 统编版三年级语文上学期第七单元综合提优卷(A)(含答案)
- 餐饮业安全生产责任制
- 责任制整体护理持续改进
- 2025年电大建筑力学试题及答案
- 蛋鸡买卖合同(标准版)
评论
0/150
提交评论