《面向对象程序设计》实验指导书 (1-6个实验,含参考代码)(2)

2018-12-01 16:50

实验三 类的构造函数、析构函数的应用

(实验课时:2 实验性质:设计)

实验名称: 类的构造函数、析构函数的应用

实验目的: (1)练习类的构造函数、析构函数的定义和使用方法;

(2)练习对象数组、对象指针的使用; (3)练习类的静态成员的使用。

实验设备: (1)硬件:个人微机(配置不低于:CPU为P4,主频1.6G,内存256MB,硬盘40GB);

(2)软件:操作系统为WindowsXP(或2000、server2003等),工具软件为Visual

C++6.0。

实验内容: (1)编程:设计一个学生类。要求: 学生的属性有:学号,姓名,性别; 学生的行为有:输入学生的上述属性和输出学生的上述属性。 编写构造函数对学生的所有属性初始化,无参数的构造函数设置学号为1001,姓名为“张三”,性别为‘M’(‘M’代表男,‘F’代表女)。

(2)修改上述程序:修改定义析构函数,在析构函数中输出学号。再运行程序,

观察运行结果。

(3)修改上述main程序:使用对象指针,用new生成一个学生对象,然后,

用delete清除该对象,使用单步运行观察运行结果。

(4)修改上述程序:增加一个私有数据成员成绩score;增加一个成员函数

readdata:输入一学生的学号和成绩;增加一个成员函数getscore:取得学生的成绩。再修改main函数;定义一个班的同学(假如一个班有10位同学,采用对象数组),输出该班的平均成绩。

(5)不用对象数组,而使用静态的数据成员来实现(4)中求一个班的学生的平

均成绩,学生的成绩在构造函数中输入。

(提示:定义2个静态数据成员,1个是存储总成绩,1个是存储学生人数)。 (6)分别运行上述程序,并分析结果。

注意:在增加一个新的功能时,可以把暂时不需要的功能代码给注释掉。

实验要求: (1)掌握C++类的构造函数、析构函数的定义和使用方法;

(2)掌握C++对象数组、对象指针的使用; (3)掌握类的静态数据成员的定义和使用; (4)程序格式规范,程序运行正确;

(5)认真书写实验报告,如实填写各项实验内容。

实验步骤: (1)启动Visual C++6.0开发环境;

(2)创建一个项目;

(3)建立C++源程序文件; (4)编辑C++源程序文件内容; (5)建立并运行可执行程序; (6)关闭工作空间。

4

实验四 友员和运算符重载

(实验课时:2 实验性质:设计)

实验名称: 友元和运算符重载

实验目的: (1)进一步了解运算符重载的概念和使用方法;

(2)掌握几种常用的运算符重载的方法; (3)练习友员函数的定义和使用; (4)了解转换构造函数的使用方法。

实验设备: (1)硬件:个人微机(配置不低于:CPU为P4,主频1.6G,内存256MB,硬盘40GB);

(2)软件:操作系统为WindowsXP(或2000、server2003等),工具软件为Visual

C++6.0。

实验内容: 事先编好程序,上机调试和运行程序,分析结果。

(1)有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使

之能用于矩阵相加。如: c=a+b。

(2)编写一个友元函数来读取矩阵指定所在行列的值。

(3)定义一个Teacher(教师)类和一个Student(学生)类,二者有一部分数据成员是

相同的,例如num(号码),name(姓名),sex(性别)。编写程序,将一个Student对象(学生)转换为Teacher(教师)类,只将以上3个相同的数据成员移植过去。可以设想为: 一位学生大学毕业了,留校担任教师,他原有的部分数据对现在的教师身份来说仍然是有用的,应当保留并成为其教师的数据的一部分。

实验要求: (1)掌握C++运算符重载的概念和使用方法;

(2)熟悉转换构造函数的使用方法; (3)程序格式规范,程序运行正确;

(4)认真书写实验报告,如实填写各项实验内容。

实验步骤: (1)启动Visual C++6.0开发环境;

(2)创建一个项目;

(3)建立C++源程序文件; (4)编辑C++源程序文件内容;

(5)建立并运行可执行程序,并分析结果; (6)关闭工作空间。

5

实验五 类的继承与派生

(实验课时:2 实验性质:设计)

实验名称:类的继承与派生

实验目的: (1)进一步理解继承与派生的概念;

(2)掌握通过继承派生出一个新的类的方法;

实验设备: (1)硬件:个人微机(配置不低于:CPU为P4,主频1.6G,内存256MB,硬盘40GB);

(2)软件:操作系统为WindowsXP(或2000、server2003等),工具软件为Visual

C++6.0。

实验内容: 事先编好程序,上机调试和运行程序,分析结果。

(1)编程:编写一个学生类Student。要求: ① 学生的保护属性有:学号(Num),姓名(Name),性别(Sex);

学生的公用成员函数有:ReadData( )用于输入Num、Name、Sex。OutputData( )

用于输出Num、Name、Sex。

② 然后,在学生类的基础上派生出研究生类Graduate,该类新增私有属性研究

方向(ResearchD),新增公用成员函数ResearchWork( ),该函数功能为输出学号和研究方向。

③ 编写main函数测试基类和派生类的各属性很函数的访问。修改派生类的派生

方式以及基类成员的访问方式,再测试看看基类和派生类的属性访问方式有何不同。

(2)编程:在上述工程中增加一个Teacher(教师)类,采用多重继承方式由

Student和Teacher类公有派生出新类Student_Teacher。要求:

① Teacher类的保护成员有:Name、Sex、Title(职称)、Wages(工资)。两

个基类中的Name、Sex同名,在引用这些数据成员时,指定作用域。

② 在派生类Student_Teacher中,增加两个成员函数:ReadF1()用于读入:

Num、Name、Sex、Title、Wages。Show()用于输出数据,在Show()中,首先调用Student类的display()函数用于输出Num、Name、Sex,然后再用cout语句输出Title、Wages。

③ 在类体中声明成员函数,在类外定义成员函数。

思考题:类的三种继承方式的主要区别是什么?

实验要求: (1)掌握继承与派生的概念;

(2)掌握通过继承派生出一个新的类的方法; (3)程序格式规范,程序运行正确;

(4)认真书写实验报告,如实填写各项实验内容。

实验步骤: (1)启动Visual C++6.0开发环境;

(2)创建一个项目;

(3)建立C++源程序文件; (4)编辑C++源程序文件内容; (5)建立并运行可执行程序; (6)关闭工作空间。

6

实验六 类的多态性与虚函数

(实验课时:2 实验性质:设计)

实验名称: 类的多态性与虚函数 实验目的: (1)了解多态性的概念;

(2)了解虚函数的作用和使用方法;

(3)了解纯虚函数和抽象类的概念和用法。

实验设备: (1)硬件:个人微机(配置不低于:CPU为P4,主频1.6G,内存256MB,硬盘40GB);

(2)软件:操作系统为WindowsXP(或2000、server2003等),工具软件为Visual

C++6.0。

实验内容: 事先编好程序,上机调试和运行程序,分析结果。

(1)编程:定义抽象基类Shape(图形)。

Shape类有一个公共的纯虚函数Area,用于派生类求图形的面积。 (2)由Shape派生出3个派生类:Circle(圆形)、Rectangle(矩形)、Triangle(三

角形),用一个函数PrintArea分别输出以上三者的面积,3个图形的数据在定义对象时给定。

在主程序中测试这些类的PrintArea函数。

(3)在类Circle基础上再派生一个圆柱体Cylinder,重载Area函数求圆柱体的

体积。然后,编写主程序采用静态多态性和动态多态性分别测试Area函数。

(4)在类Circle中定义一个析构函数,让它输出一行信息“This is Cicle

Destruction。”,在类Cylinder中定义一个析构函数,让它输出一行信息“This is Cylinder Destruction。”。

在主程序中用指向基类Circle类的指针动态生成Cylinder类对象,然后用delete

语句释放该对象,测试看看运行结果如何。再修改Circle的析构函数为虚函数,测试看看运行结果如何。

(5)运行上述程序,并分析结果。

实验要求: (1)掌握多态性的概念;

(2)掌握虚函数的作用和使用方法;

(3)掌握纯虚函数和抽象类的概念和用法; (4)程序格式规范,程序运行正确;

(5)认真书写实验报告,如实填写各项实验内容。

实验步骤: (1)启动Visual C++6.0开发环境;

(2)创建一个项目;

(3)建立C++源程序文件; (4)编辑C++源程序文件内容;

(5)建立并运行可执行程序,并分析结果; (6)关闭工作空间。

思考题:虚函数的作用是什么?

7

附录:各实验的程序代码

实验1:程序代码

程序1:

#include using namespace std; int main()

{int max(int a,int b,int c); int max(int a,int b); int a=8,b=-12,c=7;

cout<<\ cout<<\ return 0; }

int max(int a,int b,int c) {if(b>a) a=b; if(c>a) a=c; return a; }

int max(int a,int b) {if(a>b) return a; else return b; }

程序2: //cpp2_1.cpp

#include using namespace std; int main()

{int fac(int); int a,b,c,sum=0; cout<<\ cin>>a>>b>>c;

sum=sum+fac(a)+fac(b)+fac(c);

cout<

//cpp2_2.cpp,递归方式 int fac(int n)

8


《面向对象程序设计》实验指导书 (1-6个实验,含参考代码)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2012年12月14日康州小学枪击案 奥巴马全国讲话稿(中英文对照)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: