当前位置:文档之家› c派生类与继承实验报告精修订

c派生类与继承实验报告精修订

c派生类与继承实验报

SANY标准化小组 #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#
实验2 派生类与继承
实验课程名:面向对象程序设计(C++)
专业班级:学号:姓名:
实验时间:实验地点:指导教师:
二、实验内容
一、构造一个类Geometry 及其派生类,该类主要实现关于几何图形的基本操作。

对于基类“几何图形”,有求面积、求体积的函数(纯虚函数),其派生类圆和矩形主要有初始化(构造函数),求面积,求周长操作,类圆的派生类圆球和圆柱有求表面积、体积操作。

试在主函数中分别定义圆、圆球、圆柱以及矩形的对象,并调用其成员函数实现其相应操作。

实验代码如下:
#include<iostream>
using namespace std;
class Geometry
{
public:
Geometry(){}
~Geometry(){}
double GetArea(){}//求面积函数
double GetPerimeter(){}//求体积函数
double Getcolume(){}//求周长函数
Circle
radiums
Circle()
~Circle() Ball
Ball()
~Ball() Geometry
Geometry()
~Geometry()
GetArea()
GetPerimeter()
Getcolume()
show()
Column Column()
~Column()
Rectangl Rectangle() ~Rectangle()
};
double Column::GetArea()
{
return(2**R()*R()+2**R()*L());
}
double Column::GetPerimeter()
{
return*R()*R()*L());
}
Column::show()
{
cout<<"圆柱的体积为:"<<GetPerimeter()<<' '<<"表面积为:"<<GetArea()<<endl;
}
int main()
{
Circle circle;
();
Rectangle rectangle(3,4);
();
Ball ball;
();
Column column(1,2,3);
();
return 0;
}
运行结果:
代码分析:
实验分析:
1)在主函数中定义两个三角形的类,分别由三条边六个点组成,其中第一组能组成三角形,输出面积,第二组边不能组成三角形输出不能构成三角形;
2)定义点类时,定义两个浮点型数据,用来表示点的坐标,定义边类时定义两个顶点,表示两个端点组成线段,定义三角形类时,用三边表示三角形;
3)三角形的面积用海伦公式求得,在三角形中定义一个判断函数,判断三边能否组成三角形,当能组成三角形时则求面积并输出,当不能组成三角形时,输出不能构成三角形;
三、定义一个基类MyArray,基类中可以存放一组整数,基类中有构造函数、析构函数、输入数据和输出数据的函数。

class MyArray{
public:
MyArray(int leng);
~MyArray{};
void Input();
void Display(string);
protected:
int*alist;
int length;
};
(1)声明一个类SortArray继承类MyArray,在该类中定义一个函数,具有将输入的整数从小到大进行排序的功能。

(2)声明一个类ReArray继承类MyArray,在该类中定义一个函数,具有将输入的整数进行倒置的功能。

(3)声明一个类AverArray继承类MyArray,在该类中定义一个函数,具有求输入的整数平均值的功能。

(4)声明一个NewArray类,同时继承了类SortArray,ReArray和AverArray,使得类NewArray的对象同时具有排序、倒置和求平均值的功
();
();
return 0;
}
实验结果:
结果分析:
定义一个基类,用指针作为数组名,定义一个数组,在定义各个基类,分别实现求平均值,排序,倒置的功能。

在调用成员时由于各个派生类都有基类的成员input,output,故用虚基类,避免出现二异性。

四、队列具有先进先出的特点,所有新来的元素都放在队列尾部,出队列的元素从队列头部出去。

栈具有后进先出的特点,所有入栈的元素都放在栈顶,出栈时栈顶元素先出。

这两种结构具有很多相似的地方:都存放了一系列的元素,元素的操作都在两头进行,元素个数都是动态可变的。

我们可以设计一个基类,完成它们共同的功能,然后分别派生出队列类和栈类。

这样可以减少代码,提高效率。

设计的基类也可以用于派生出其他类。

本实验要求设计这个基类以及它的两个派生类。

设计基类LinkList,用链表结构实现。

要求链表类具有以下功能:能够在链表的头尾增加节点以及在链表尾增加节点
能够记录链表的个数(用静态成员)
程序分析:
定义基类链表其中包含功能
能够在链表的头尾增加节点以及在链表尾增加节点
能够记录链表的个数(用静态成员)
能返回链表中的节点个数
能查看链表头节点的元素值
能告知链表是否为空
在链表类的构造函数中初始化链表
在链表类的析构函数中释放链表所有元素的空间
定义派生类队与栈,队列初始化用链表的初始化函数,用gettail实现入队操作用gethead实现从队列的头部出对。

栈中初始化用函数puthead实现从栈顶入栈,用函数gethead()实现从栈顶出栈。

三、结论
1)继承可以从基类中获得派生类中不曾定义过的成员,提高了编程效率;2)继承与派生分为共有、私有、保护三种继承方式,其中共有使用最广泛,它使得派生类与基类中的成员具有相同的属性。

相关主题