面向对象程序设计实验报告-实验三

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1北京理工大学珠海学院实验报告ZHUHAICAMPAUSOFBEIJINGINSTITUTEOFTECHNOLOGY班级:13级计算机3班学号:130201031037姓名:郑永雄指导教师:谭忠兵实验题目:多态性实验时间:2014-06-09成绩:一、实验内容程序1.编写一个程序,用成员函数重载运算符“+”和“-”将两个二维数组相加和相减,要求第一个二维数组的值由构造函数设置,另一个二维数组的值由键盘输入。程序2.编写一个程序,要求:(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)”输出当前对象的实部和虚部,例如:对象的实部和虚部分别为4.2和6.5,则调用print函数输出格式为:(4.2,6.5);(4)编写主程序,计算出复数对象c1和c2相加结果,并将其结果输出。程序3.写一个程序,定义抽象基类Container,由它派生出3个派生类:Sphere(球体)、Cylinder(圆柱体)、Cube(正方体)。用虚函数分别计算几种图形的表面积和体积。程序4.编写程序:定义抽象基类Shape,area()为求图形面积的虚成员函数。由它派生出三个派生类:Circle(圆形)、Rectangle(长方形)、和Triangle(三角形),用虚函数area分别计算各种图形的面积。在主函数中,分别创建派生类的对象并计算其面积,求出它们的面积的和。要求用基类指针数组,使它的每一个元素指向一个派生类的对象,以体现多态性。程序5.计算正方体、球体、圆柱体的体积。要求:定义基类shape,在其中定义求体积的纯虚函数volume,并定义一个数据成员r,它可作为球体的半径、正方体的边长以及圆柱体的底面圆半径。由shape类派生出3个类,分别是正方体类、球体类和圆柱体类,在这3个类中都具有求体积的重定义版本。在主函数中统一求3种对象的体积,实现多态性。二、问题分析(类的数据成员、成员函数等的确定,对象的创建等)程序1:首先定义一个数组类,数据成员是数组c[2][3],成员函数有运算符重载函数shuzuoperator+(intb[2][3])和shuzuoperator-(intb[2][3]),当然还有输出函数show。在主函数中创建对象x,y,z。当然也要按要求输入数组。程序2:首先定义类complex,数据成员有real和imag,成员函数有友元运算符重载函数friendcomplexoperator+(complex&a,complex&b)和输出函数print。在主函数中创建对象c1和c2,最后运算结果。2程序3:首先定义抽象基类Container,数据成员有r,成员函数有友元虚函数virtualvoids_v()由它公有派生出3个派生类:Sphere(球体)、Cylinder(圆柱体)、Cube(正方体)。在主函数中分别创建各派生类的对象s1,c1和,c2。用虚函数virtualvoids_v()分别计算3种图形的表面积和体积。程序4:首先定义抽象基类Shape,数据成员有a和b,area()为求图形面积的虚成员函数。由它公有派生出三个派生类:Circle(圆形)、Rectangle(长方形)、和Triangle(三角形),用虚函数area分别计算各种图形的面积。在主函数中,创建基类指针ptr,分别创建派生类的对象c1,r1和t1。Ptr指针指向派生类的对象,用area()计算其面积。程序5:首先定义基类shape,在其中定义求体积的纯虚函数volume,并定义一个数据成员r,它是球体的半径、正方体的边长以及圆柱体的底面圆半径。由shape类派生出3个类,分别是正方体类、球体类和圆柱体类,圆柱体增加数据成员h,在这3个类中都具有求体积的重定义版本。在主函数中创建对象s1,c1和c2,并调用各自的纯虚函数volume计算体积。三、程序实现(完整程序)程序1:#includeiostream#includecmathusingnamespacestd;classshuzu{public:shuzu(){for(inti=0;i2;i++)for(intj=0;j3;j++)c[i][j]=0;}shuzu(inta[2][3]){for(inti=0;i2;i++)for(intj=0;j3;j++)c[i][j]=a[i][j];}shuzuoperator+(intb[2][3]){shuzud;for(inti=0;i2;i++)for(intj=0;j3;j++)d.c[i][j]=c[i][j]+b[i][j];returnd;}shuzuoperator-(intb[2][3]){shuzue;for(inti=0;i2;i++)for(intj=0;j3;j++)3e.c[i][j]=c[i][j]-b[i][j];returne;}voidshow(){cout运算结果为:endl;for(inti=0;i2;i++)for(intj=0;j3;j++)coutc[i][j]\t;coutendl;}private:intc[2][3];};intmain(){intm[2][3]={{3,7,5},{8,3,2}};cout原数组为:endl;for(inti=0;i2;i++)for(intj=0;j3;j++)coutm[i][j]\t;coutendl;intn[2][3],k;for(inti=0;i2;i++)for(intj=0;j3;j++){cink;n[i][j]=k;}cout输入数组为:endl;for(inti=0;i2;i++)for(intj=0;j3;j++)coutn[i][j]\t;coutendl;shuzux(m);shuzuy;y=x+n;y.show();shuzuz;z=x-n;z.show();getchar();getchar();return0;4}程序2:#includeiostream#includestdlib.husingnamespacestd;classcomplex{public:complex(doubler=0,doublei=0);friendcomplexoperator+(complex&a,complex&b);voidprint(){cout(real,imag)endl;}private:doublereal;doubleimag;};complexoperator+(complex&a,complex&b){complexc;c.real=a.real+b.real;c.imag=a.imag+b.imag;returnc;}complex::complex(doubler,doublei){real=r;imag=i;}intmain(){complexc1(2.5,3.7);system(color2C);cout第一个复数:endl;c1.print();complexc2(4.2,6.5);cout第二个复数:endl;c2.print();complexd;d=c1+c2;cout相加后结果:endl;d.print();getchar();getchar();return0;}5程序3:#includeiostream#includestdlib.husingnamespacestd;classContainer{public:Container(doubler1){r=r1;}virtualvoids_v(){cout计算图形表面积和体积:endl;}protected:doubler;};classSphere:publicContainer{public:Sphere(doubler1):Container(r1){}voids_v(){constdoublepi=3.14159262;cout球体的半径是:rendl;cout表面积是4*pi*r*rendl;cout体积是:(4/3)*pi*r*r*rendl;}};classCylinder:publicContainer{public:Cylinder(doubler1,doubleh1):Container(r1){h=h1;}voids_v(){constdoublepi=3.14159262;cout圆柱体的半径是:r高是:hendl;cout表面积是(2*pi*r*r+2*pi*r*h)endl;cout体积是:h*pi*r*rendl;}private:doubleh;};classCube:publicContainer{public:Cube(doubler1):Container(r1)6{}voids_v(){cout正方体的边长是:rendl;cout表面积是6*r*rendl;cout体积是:r*r*rendl;}};intmain(){system(color3D);Spheres1(2);s1.s_v();Cylinderc1(3,4);c1.s_v();Cubec2(5);c2.s_v();getchar();getchar();return0;}程序4:#includeiostream#includestdlib.husingnamespacestd;classshape{public:shape(doublex,doubley){a=x;b=y;}virtualvoidarea()=0;protected:doublea;doubleb;};classCircle:publicshape{public:Circle(doublex):shape(x,x){}voidarea(){constdoublepi=3.14159262;cout圆的半径是:aendl;7cout面积是:pi*a*aendl;}};classRectangle:publicshape{public:Rectangle(doublex,doubley):shape(x,y){}voidarea(){constdoublepi=3.14159262;cout矩形的长是:a宽是:bendl;cout面积是:a*bendl;}};classTriangle:publicshape{public:Triangle(doublex,doubley):shape(x,y){}voidarea(){cout三角形的底是:a高是bendl;cout面积是:0.5*a*bendl;}};intmain(){system(color3D);shape*ptr;Circlec1(2);Rectangler1(7,8);Trianglet1(6,8);ptr=&c1;ptr-area();ptr=&r1;ptr-area();ptr=&t1;ptr-area();getchar();getchar();return0;}程序5:#includeiostream8#includestdlib.husingnamespacestd;classshape{public:shape(doubler1){r=r1;}vi

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功