c派生类及继承实验报告16036.pdf
《c派生类及继承实验报告16036.pdf》由会员分享,可在线阅读,更多相关《c派生类及继承实验报告16036.pdf(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-实验 2 派生类与继承 实验课程名:面向对象程序设计C+专业班级:*:实验时间:实验地点:指导教师:2.1 实验目的和要求(1)掌握派生类的声明方法和派生类构造函数的定义方法。(2)掌握不同继承方式下,基类成员在派生类中的访问属性。(3)掌握在继承方式下,构造函数与析构函数的执行顺序与构造规则。(4)学习虚基类在解决二义性问题中的作用。二、实验容 一、构造一个类Geometry及其派生类,该类主要实现关于几何图形的根本操作。对于基类几何图形,有求面积、求体积的函数纯虚函数,其派生类圆和矩形主要有初始化构造函数,求面积,求周长操作,类圆的派生类圆球和圆柱有求外表积、体积操作。试在主函数中分别定
2、义圆、圆球、圆柱以及矩形的对象,并调用其成员函数实现其相应操作。-实验代码如下:#include using namespace std;class Geometry public:Geometry()Geometry()double GetArea()/求面积函数 double GetPerimeter()/求体积函数 Circle radiums Circle()Circle()Ball Ball()Ball()Geometry Geometry()Geometry()GetArea()GetPerimeter()Getcolume()show()Column Column()Column
3、()Rectangle Rectangle()Rectangle()-double Getcolume()/求周长函数 virtual show();class Circle:public Geometry public:Circle(double i)radiums=i;Circle()double GetArea();double Getcolume();double R()return radiums;show();private:double radiums;double Circle:GetArea()-double S;S=3.14*radiums*radiums;return S
4、;double Circle:Getcolume()double L;L=2*3.14*radiums;return L;Circle:show()cout圆的面积为:GetArea()周长为:Getcolume()endl;class Rectangle:public Geometry public:Rectangle(double i,double j)length=i;wide=j;Rectangle()double GetArea();-double Getcolume();double L()return length;show();private:double length;dou
5、ble wide;double Rectangle:GetArea()double S;S=length*wide;return S;double Rectangle:Getcolume()double L;L=2*(length+wide);return L;-Rectangle:show()cout矩形的面积为:GetArea()周长为:Getcolume()endl;class Ball:public Circle public:Ball(double i):Circle(i);Ball();double GetArea();double GetPerimeter();show();do
6、uble Ball:GetArea()double S;S=4*3.14*R()*R();return S;double Ball:GetPerimeter()-double V;V=(4/3)*3.14*R()*R()*R();return V;Ball:show()cout球的体积为:GetPerimeter()外表积为:GetArea()endl;class Column:public Circle,public Rectangle public:Column(double i,double j,double k):Circle(i),Rectangle(j,k);Column();do
7、uble GetArea();double GetPerimeter();show();double Column:GetArea()return(2*3.14*R()*R()+2*3.14*R()*L();-double Column:GetPerimeter()return(3.14*R()*R()*L();Column:show()cout圆柱的体积为:GetPerimeter()外表积为:GetArea()endl;int main()Circle circle(2.5);circle.show();Rectangle rectangle(3,4);rectangle.show();B
8、all ball(3.3);ball.show();Column column(1,2,3);column.show();return 0;-运行结果:代码分析:1首先定义基类Geometry,在定义基类的派生类 Circle,Rectangle 再定义以 Circle,Rectangle 为基类的派生类 Column,以及以 Circle 为基类的派生类 Ball;2在定义派生类时用构造函数初始化私有成员;3最后用类的对象来调用类函数;二、设计如下类:1建立一个 Point 类,表示平面中的一个点;建立一个 Line 类,表示平面中的一条线端,含两个 Point 类的对象;建立 Triang
9、le 类,表示一个三角形,含三个 Line 类的对象构成一个三角形。2设计三个类的相应的构造函数、复制构造函数,完成初始化和对象复制 3设计 Triangle 类的成员函数完成三条边是否能构成三角形的检验和三角形面积计算,面积显示。实验代码:#include#include using namespace std;class Point /定义一个点的类,坐标为*,y public:Point(double i,double j)*=i;y=j;double*,y;class Line public:Line(double*1,double y1,double*2,double y2):p1(
10、*1,y1),p2(*2,y2);double length();private:-Point p1,p2;double Line:length()return(sqrt(p1.*-p2.*)*(p1.*-p2.*)+(p1.y-p2.y)*(p1.y-p2.y);class Triangle public:Triangle(double*1,double y1,double*2,double y2,double*3,double y3,double*4,double y4,double*5,double y5,double*6,double y6):L1(*1,y1,*2,y2),L2(*3
11、,y3,*4,y4),L3(*5,y5,*6,y6);int panduan();double Area();void show();private:Line L1,L2,L3;int Triangle:panduan()double a=L1.length();double b=L2.length();double c=L3.length();if(a+bc&b+ca&a+cb)return 1;else return 0;double Triangle:Area()double a=L1.length();double b=L2.length();double c=L3.length();
12、double s=(a+b+c)/2;return(sqrt(s*(s-a)*(s-b)*(s-c);void Triangle:show()if(panduan()cout三角形的面积为:Area()endl;else cout不能构成三角形endl;int main()-Triangle T1(0,0,0,1,0,0,1,0,0,1,1,0);Triangle T2(1,0,0,0,0,0,0,2,0,0,0,1);T1.show();T2.show();return 0;实验结果:实验分析:1)在主函数中定义两个三角形的类,分别由三条边六个点组成,其中第一组能组成三角形,输出面积,第二组
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 派生 继承 实验 报告 16036
限制150内