C++面向对象程序设计实验指导书(3)

2020-03-27 19:58

【要求】

(1)向Rect类中添加数据成员及成员函数,并完善成员函数的功能。如设计一个Area_int()函数,计算边长为整型的长方形的面积;设计一个Area_double()函数,计算边长为double型的长方形的面积。

(2)重载构造函数。一种构造函数用整型变量记录长方形的长和宽,另一种构造函数用double型记录。

(3)体现对象的构造和析构过程。例如,在构造函数中用cout<<”I am the constructor!”<

(4)在main()函数中定义两个Rect类的对象,一个对象用实例实现(就像定义普通的变量一样),另一个对象用指针实现(利用关键字new,给指针分配内存空间)。并用不同的参数,以调用不同的构造函数体现构造函数的重载。

4、声明一个Student类,在该类中包括一个数据成员score(分数)、两个静态数据成员total_score(总分)和count(学生人数);还包括一个成员函数account()用于设置分数、累计学生的成绩之和、累计学生人数,一个静态成员函数sum()用于返回学生的成绩之和,另一个静态成员函数average()用于求全班成绩的平均值。在main()函数中,输入某班学生的成绩,并调用上述函数求出全班学生的成绩之和和平均分。

5、依据下面的描述设计并实现一个时间类Time,并在main函数中定义所需要的对象验证所实现代码的正确性。

(1) 私有数据成员包含小时(Hour)、分钟(Minute)和秒(Second); (2) 三个重载构造函数:

a)一个是无参数的构造函数;

b)一个是带参数的构造函数,实现对数据成员的初始化; c)一个是copy构造函数,实现用一个对象初始化本对象;

(3) 成员函数实现时间对象相加、减运算:

a) Time Add(Time&); b) Time Sub(Time&);

(4) 友元函数实现时间对象相加、减的运算符重载:

a) friend Time operator + (Time&, Time&);

共21 页,第 11页

b) friend Time operator ? (Time&, Time&);

(5) 公有成员函数void Display();输出对象的数据成员;

6、依据下面的描述定义并实现一个向量类Vector,并在main函数中定义所需要的对象验证所实现代码的正确性

1) 私有数据成员int dimension; double* data; 表示向量的维数与向量元

素存储空间的首地址

2) 无参构造函数,实现把向量所有元素初始化为0 3) 有参构造函数,实现用一个n维数组初始化n维向量 4) 拷贝构造函数 5) 析构函数

6) 输出数据成员函数 void display( );

7) 成员函数int GetDimension();获取向量对象的维数

8) 成员函数 double SetAt(double newdata,int index);实现给向量的第

index+1个元素赋值

9) 成员函数 double GetAt(int index);实现读取向量的第index+1个元素

的值

10)实现向量加、减、乘运算的成员函数 Vector Add(const Vector &ob2 ); Vector Sub(const Vector &ob2 ); int Mult(const Vector &ob2 );

共21 页,第 12页

实验三 派生类与继承

一、实验目的

1、学习类的继承,能够定义和使用类的继承关系。 2、学习派生类的声明与定义方法。 3、掌握类的定义和对象的声明。

4、熟悉公有派生和私有派生的访问特性。 5、掌握派生类构造函数和析构函数的执行顺序。

6、掌握利用访问声明调整基类成员在派生类中的访问属性。 二、试验内容

1、已有类Time和Date,要求设计一个派生类Birthtime,它继承类Time和Date,并且增加一个数据成员Childname用于表示小孩的名字,同时设计主程序显示一个小孩的出生时间和名字。

class Time {

public: Time(int h,int m, int s) { hours=h; minutes=m; seconds=s; } void display() { cout<<\出生时间:\时\分\秒\ } protected: int hours,minutes,seconds; };

class Date {

public:

Date(int m,int d,int y) {

month=m; day=d; year=y; }

共21 页,第 13页

void display() {

cout<<\出生年月:\年\月\日\ }

protected:

int month,day,year; };

2、编写一个学生和教师的数据输入和显示程序。学生数据有编号、姓名、性别、年龄、系别和成绩,教师数据有编号、姓名、性别、年龄、职称和部门。要求将编号、姓名、性别、年龄的输入和显示设计成一个类Person,并作为学生类Student和教师类Teacher的基类。

3、给出下面的基类: class area {

protected:

double height; double width; public:

area(double h,double w) { height=h; width=w; }

virtual double getarea()=0; };

【要求】

(1)建立基类area的俩个派生类rectangle与isosceles,让每一个派生类都包含一个函数getarea(),分别用来返回矩形与三角形的面积。用构造函数对height与width进行初始化。

(2)写出主程序,用来求height与width分别为10.0与5.0的矩形面积,以及求height与width分别为4.0与6.0的三角形面积。

(3)要求通过使用基类指针访问虚函数的方法(即运行时的多态性)分别

求出矩形和三角形面积。

共21 页,第 14页

实验四 多态性

一、实验目的

1、掌握运算符重载的基本方法。

2、掌握友元运算符函数和成员运算符函数的使用方法及两者之间的不同。 3、学习虚函数的定义与使用方法。 4、了解静态多态性和动态多态性。

5、学习使用虚函数和继承实现动态多态性。 二、试验内容

1、编写一个程序,要求:

(1)生明一个类Complex(复数类),定义类Complex的两个对象c1和c2,对象c1通过构造函数直接指定复数的实部和虚部(类私有数据成员为double类型:real和imag)为2.5及3.7,对象c2通过构造函数直接指定复数的实部和虚部为4.2及6.5;

(2)定义友元运算符重载函数,它以c1、c2对象为参数,调用该函数时能返回两个复数对象相加操作;

(3)定义成员函数print,调用该函数时,以格式“real+imag i”输出当前对象的实部和虚部,例如:对象的实部和虚部分别是4.2和6.5,则调用print函数输出格式为:4.2+6.5 i;

(4)编写主程序,计算出复数对象c1和c2相加结果,并将其结果输出。 2、编写一个程序,其中设计一个时间类Time,用来保存时、分、秒等私有数据成员,通过重载操作符“+”实现两个时间的相加。要求将小时范围限制在大于等于0,分钟范围限制在0~59分,秒钟范围限制在0~59秒。

提示:时间类Time的参考框架如下: class Time { public:

Time(int h=0,int m=0,int s=0);//构造函数

Time operator+(Time &);//运算符重载函数,实现两个时间的相加

Time operator+();//运算符重载函数,实现两个时间的相加

共21 页,第 15页


C++面向对象程序设计实验指导书(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:诊断学复习题填空题1发热的病因可分为和两大类2临床

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

马上注册会员

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