您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > C++实验报告五--继承与多态性--
南昌航空大学实验报告2011年11月16号课程名称:面向对象程序设计B实验名称:继承与多态性班级:姓名:同组人:无指导教师评定:签名:一、实验目的根据现有类建立新类;学习构造基类和虚函数的用法。二、实验内容应用VC++6.0的编辑环境构造一个类Jhtx及其派生类,该类主要实现关于几何图形的基本操作。对于基类“几何图形”,有求面积、求体积的函数(纯虚函数),其派生类圆和矩形主要有初始化(构造函数),求面积,求周长操作,类圆的派生类圆球和圆柱有求表面积、体积操作。试在主函数中分别定义圆、圆球、圆柱以及矩形的对象,并调用其成员函数实现其相应操作。三、概要设计要实现的功能:求类圆和矩的面积、周长,求类圆的派生类圆球和圆柱表面积、体积;函数原型:doubleBall::GetArea();doubleBall::Getvolume();doubleCircle::GetArea();doubleCircle::Getperimeter();doubleColumn::GetArea();doubleColumn::Getvolume();doubleRectangle::GetArea();doubleRectangle::Getperimeter();voidShow();四、详细设计定义纯虚函数:virtualdoubleGet_Girth()=0;virtualdoubleGet_Volume()=0;virtualdoubleGet_SurArea()=0;virtualdoubleGet_Area()=0;求圆的面积的操作:doubleCircle::GetArea(){returnM*radiums*radiums;}求圆周长的操作:doubleCircle::Getperimeter(){return2*M*radiums;}求球表面积的操作:doubleBall::GetArea(){return4.0*M*radiums*radiums;}求球体积的操作:doubleBall::Getvolume(){return4/3*M*radiums*radiums*radiums;}求圆柱表面积的操作:doubleColumn::GetArea(){return2*M*(radiums*H+radiums*radiums);}求圆柱体积的操作:doubleColumn::Getvolume(){returnM*H*radiums*radiums;}求矩形面积的操作:doubleRectangle::GetArea(){returnLong*Wide;}求矩形周长的操作:doubleRectangle::Getperimeter(){return2*(Long+Wide);}五、程序调试在函数调试的过程中,出现了以下错误提示信息:1、errorC2470:“Circle”:看起来像函数定义,但没有参数列表;跳过明显的函数体;原因为在语句“doubleCircle::GetArea()”将域作用符“::”错写为“:“;经调试无误后,运行的结果为:六、实验总结通过这次的试验,我明显的感觉到自己对这方面的知识掌握的还不够熟练,不能顺利地、流畅地运用这方面的知识,因为我没有在规定的时间内完成程序的设计,课后还是要多复习。七、附录(源程序代码)#includeiostream.h#defineM3.14classGeometry{private:doubleR;public:Geometry(doubler){R=r;}virtualdoubleGetArea()=0;virtualdoubleGetperimeter()=0;virtualdoubleGetvolume();virtualvoidshow()=0;};doubleGeometry::Getvolume(){cout求体积操作endl;return0;}classCircle:publicGeometry{protected:doubleradiums;public:Circle(doubler):Geometry(r){radiums=r;}doubleGetArea();doubleGetperimeter();voidshow();};doubleCircle::GetArea(){returnM*radiums*radiums;}doubleCircle::Getperimeter(){return2*M*radiums;}voidCircle::show(){cout这个圆的面积是:GetArea()endl;cout这个圆的周长是:Getperimeter()endl;}classBall:publicCircle{public:Ball(doublex):Circle(x){}doubleGetArea();doubleGetvolume();voidshow();};doubleBall::GetArea(){return4.0*M*radiums*radiums;}doubleBall::Getvolume(){return4/3*M*radiums*radiums*radiums;}voidBall::show(){cout这个球的表面积:GetArea()endl;cout这个球的体积是:Getvolume()endl;}classColumn:publicCircle{private:doubleH;public:Column(doublex,doubleh):Circle(x){H=h;}doubleGetArea();doubleGetvolume();voidshow();};doubleColumn::GetArea(){return2*M*(radiums*H+radiums*radiums);}doubleColumn::Getvolume(){returnM*H*radiums*radiums;}voidColumn::show(){cout这个圆柱的表面积是:GetArea()endl;cout这个圆柱的体积是:Getvolume()endl;}classRectangle:publicGeometry{private:doubleLong,Wide;public:Rectangle(doublex,doubley,doubler):Geometry(r){Long=x;Wide=y;}doubleGetArea();doubleGetperimeter();voidshow();};doubleRectangle::GetArea(){returnLong*Wide;}doubleRectangle::Getperimeter(){return2*(Long+Wide);}voidRectangle::show(){cout这个矩形的面积是:GetArea()endl;cout这个矩形的周长是:Getperimeter()endl;}intmain(){Geometry*A;cout1.平面圆操作2.圆球操作3.圆柱操作4.矩形操作endl;cout请输入你要计算的几何体:(如输入1,2,3,4)?endl;inti;cini;if(i==1){cout请输入该圆的半径:endl;doubleR1;cinR1;CircleA1(R1);A=&A1;A-show();}elseif(i==2){cout请输入该球的半径:endl;doubleR2;cinR2;BallA2(R2);A=&A2;A-show();}elseif(i==3){cout请输入圆柱的半径和高:endl;doubleR3,H;cinR3H;ColumnA3(R3,H);A=&A3;A-show();}elseif(i==4){cout请输入矩形的长和宽:endl;doublea,b;cinab;RectangleA4(a,b,0);A=&A4;A-show();}return0;}
本文标题:C++实验报告五--继承与多态性--
链接地址:https://www.777doc.com/doc-5174518 .html