面向对象程序设计实验指导书讲解

发布时间 : 星期日 文章面向对象程序设计实验指导书讲解更新完毕开始阅读

ii. 把光标移到语句answer=fib(n)前,从Debug菜单单击Run To Cursor,在程序运行的DOS窗口中按

提示输入数字10,这时回到可视界面中,光标停在第11行,观察一下n的值。

iii. 从Debug菜单中单击Step Into,程序进入fib函数,观察一下n的值,把光标移到语句

return(fib(n-2)+fib(n-1))前,从Debug菜单单击Run to Cursor,再单击Step Into,程序递归调用fib函数,又进入fib函数,观察n的值。

iv. 继续执行程序,参照上述的方法,观察程序的执行顺序,加深对函数调用和递归调用的理解。 v. 再试试Debug菜单栏中的别的菜单项,熟悉Debug的各种方法。

5

实验四、类与对象(2学时)

1、 实验目的:

(1) 掌握类的定义和使用 (2) 掌握类的定义和对象的声明 (3) 复习具有不同访问属性的成员的访问方式。 (4) 察构造函数和析构函数的执行过程。 (5) 学习类的聚集使用方法。 (6) 使用DEBUG来调试程序,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。

2、实验任务

1)定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中rank为枚举类型CPU_Rank,定义为enum CPU_Rank={P1=1,P2,P3,P4,P5,P6,P7},frequency为单位为MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。

2)定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,定义并实现这个类。 3)(选做)设计一个用于人事管理的People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。其中“出生日期”定义为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数。

3、实验步骤

(1) 首先定义枚举类型CPU_Rank,例如 enum CPU_Rank{ P1=1,P2,P3,P4,P5,P6,P7},再定义CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,定义成员函数run、stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示信息。在主程序中定义一个CPU类的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。程序名:lab4_1.cpp。 (2) 使用debug调试功能观察lab4_1.cpp的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。参考程序如下:

//lab4_1.cpp

#include

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;

cout<<”构造了一个CPU!”<

~CPU(){cout<<”析构了一个CPU!”<

6

Void SetRank(CPU_Rank r){rank=r;} Void SetFrequency(int f){frequency=f;} Void SetVoltage(float v){voltage=v;}

Void Run(){cout<<”CPU开始运行!”<

void main() {

CPU a(P6,300,2.8);

i. Run(); a. Stop(); }

(3)调试操作步骤如下:

Build|Start Debug|Step Into 命令,系统进行单步执行状态,程序开始运行,一个DOS窗口出现,此时光标停在main()函数的入口处;

A)从Debug菜单栏中单击Step Over,此时,光标下移,程序准备执行CPU对象的初始化; B)单击Step Into,程序准备执行CPU类的构造函数;

C)连续单击Step Over,观察构造函数的执行情况,直到执行完构造函数,程序回到主函数;

D)此时程序准备执行CPU对象的run()函数,单击Step Into,程序进入run()成员函数,连续单击Step Over,直到回到main()函数;

E)继续执行程序,参照上述的方法,观察程序的执行顺序,加深对类的构造函数、析构函数、成员函数的执行顺序的认识;

F)再试Debug菜单栏中的别的菜单项,熟悉Debug的各种方法。

G)选定义CPU类、RAM类、CDROM类。再定义Computer类:定义私有数据成员cpu、ram、cdrom,定义公有成员函数run、stop,可在其中输出提标信息居主程序中定义一个Computer的对象,调用其成员函数,观察类对象及其成员变量的构造与析构顺序,以及成员函数的调用。程序名:lab4_2.cpp。

(5) 使用debug调试功能观察lab4_2.cpp程序的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序,特别注意观察成员变量的构造与析构顺序。

7

实验五 C++程序的结构(2学时) 一、实验目的

1. 观察程序运行中变量的作用域、生存期和可见性。 2. 学习类的静态成员的使用。

3. 学习多文件结构在C++程序中的使用。

二、实验任务

1.运行下面的程序,观察变量x、y的值。 //lab5_1.cpp

#include

void fnl(); int x=1,y=2;

int main() {

count<<\ count<<\ count<<\

count<<\ int x=10, y=20; count<<\ count<<\

count<<\ fnl();

count<<\ count<<\ count<<\ return 0; }

void fnl() {

int y=20;

count<<\ count<<\}

2.现客户机(CLIENT)类。定义字符型静态数据成员ServerName,保存其服务器名称;整型静态数据成员ClientNum,记录已定义的客户数量;定义静态函数ChangeSeverName()改变服务器名称。在头文件client.h中定义类,在文件client.cpp中实现,在test.cpp中测试这个类,观察相应的成员变量取值的变化情况。 三、实验步骤

1. 运行程序lab5_1,观察程序输出。

全局变量的作用域为文件作用域,在整个程序运行期间有效,但如果在局部模块中定义了同名的变量,则在局部模块中,可见的是局部变量,此时,全局变量不可见;而局部变量的生存期只限于相应的程序模块中,离开相应的程序模块,局部变量x、y就不再存在,此时同名的全局变量重新可见。

2. 新建一个空的项目lab5_2,添加头文件client.h,在其中定义类CLIENT,注意使用编译预处理命令;再添加原程序文件client.cpp,在其中实现CLIENT类,注意静态成员变量的使用方法,再添加文件lab5_2.cpp,在其中定义main()函数,测试CLIENT类,观察相应的成员变量取值的变化情况。

8

联系合同范文客服:xxxxx#qq.com(#替换为@)