实验十 类与对象的基本概念
一、 实验目的
类是C++扩展数据类型,可以封装不同类型的数据成员和函数成员。类是面向对象程序设计的基础。本次实验内容包括面向对象的基本概念、构造函数与析构函数,从实际问题抽象出类等,通过实验要求掌握以下内容:
1、 掌握面向对象的基本概念和类的定义方法。
2、 掌握类成员的访问权限以及访问类成员的方法。
3、 掌握内联函数和默认函数。
4、 掌握构造函数和析构函数的意义及使用方法。
二、 实验内容
1、 范例:设计并测试一个矩形类(Rectangle)。属性为矩形的左下角与右上角的坐标,矩形水平放置。操作为计算矩形的周长和面积。
程序】
【要求】
(1) 将Rectangle(double l=0, double t=0, double r=0, double b=0); 改为Rectangle(double l, double t, double r, double b);
程序仍能正确运行吗?为什么?
(2) 注意成员函数void show( )、int calArea () 、int calPerimeter( )的使用,因为在第三章如果需编写类似功能的一般函数是需要带参数(形参)的。
而在此处作为类的成员函数又不需要带参数。思考为什么?
(3) 理解void Assign(double l,double t,double r,double b);函数的作用。将Rectangle(double l=0, double t=0, double r=0, double b=0);
改为Rectangle(double l, double t, double r, double b);这时,有人认为Rectangle(double l, double t, double r, double b) 和void assign(double l,double t,
double r,double b)的功能相同,那么assign 函数能否去掉呢?请试一试,结果会怎样?
2、 定义一个圆类(Circle),要求用两种方法定义:
方法一: 要求属性为半径,操作为计算圆的周长和面积。
方法二: 要求属性为半径(radius)、圆周长和面积,操作为输入半径,并计算周长、面积,输出半径、周长和面积。要求定义构造函数(以半径为参数,缺省值为0,周长和面积在构造函数中生成)和拷贝构造函数。
3、设计一个学校在册人员类(Person)。数据成员包括:身份证号(IdPerson),姓 名(Name),性别(Sex),生日(Birthday)和家庭住址(HomeAddress)。成员函数包 括人员信息的录入和显示等。使用多文件结构(参考课程主页给出的例子)
★选做题 4、编程建立一个分数类。分数类的数据成员包括分子和分母,操作包括约分、通分、加、减、乘、除、求倒数、比较、显示和输入。分数类的定义如下:
【要求】完成上述所有成员函数并进行检验。 请用多文件结构完成,包括后续章节的题目
★选做题 5、集合是具有同一属性(共性)而又能互相区别(个性)的多个成员汇集起来的整体,构成集合的每个成员称为集合的元素,元素间没有顺序关系。
例如,所有的大写英文字母是一个集合,它包括26个元素:A、B、…、Z。不包含任何元素的集合称为空集合。
【实验要求]】
自定义一个集合类set,采用数组存放集合的元素。实现以下成员函数并完成主函数的测试。自定义集合运算包括:
1) 判断元素elem是否为集合set的元素。
2) 为集合添加一个元素elem。
3) 从集合中删除一个元素elem。
4) 复制一个集合,其元素与原集合完全一样。
5) 显示集合中的所有元素。
6) 求两个集合中相同的元素,即求两个集合的交集。
7) 求两个集合中所有的元素,即求两个集合的并集。
8) 判断两集合包含的元素是否完全相同。
9) 判断一个集合是否被包含在另一个集合之中,即是否为另一个集合的子集。*/
【程序】