问题及代码:
/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All right reserved. *文件名称:77.cpp *作 者:董凯琦 *完成日期:2016年5月6日 *版 本 号:v1.0 * *问题描述:按以下的提示,由基类的设计和测试开始,逐渐地完成各个类的设计,求出圆格柱体的表面积、体积并输出并且完成要求的计算任务: (1)先建立一个Point(点)类,包含数据成员x,y(坐标点),实现需要的成员函数,并设计main函数完成测试; (2)以Point为基类,派生出一个Circle(圆)类,增加数据成员r(半径),以及求面积的成员函数area,实现其他需要的成员函数,设计main函数完成测试; (3)再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高),,以及求圆柱表面积的成员函数area和求圆柱体积的成员函数volume,实现需要的成员函数,并设计main函数完成测试。 *输入描述: *程序输出: */ #include <iostream> using namespace std; class Point { public: Point(double x=0,double y=0); void setPoint(double,double); double getX( ) { return x; } double getY( ) { return y; } void show(); protected: double x,y; }; Point::Point(double a,double b) { x=a; y=b; } void Point::setPoint(double a,double b) { x=a; y=b; } void Point::show() { cout<<"["<<x<<","<<y<<"]"<<endl; } class Circle:public Point { public: Circle(double x=0,double y=0,double r=0); void setRadius(double); double getRadius( ) ; double area ( ) ; void show(); protected: double radius; }; Circle::Circle(double a,double b,double r):Point(a,b),radius(r) { } void Circle::setRadius(double r) { radius=r; } double Circle::getRadius( ) { return radius; } double Circle::area( ) { return 3.14159*radius*radius; } void Circle::show() { cout<<"Center=["<<x<<", "<<y<<"], r="<<radius<<", area="<<area( )<<endl; } class Cylinder:public Circle { public: Cylinder (double x=0,double y=0,double r=0,double h=0); void setHeight(double); //设置圆柱高 double getHeight( ) ; //读取圆柱高 double area( ) ; //计算圆柱表面积 double volume( ) ; void show(); protected: double height; }; Cylinder::Cylinder(double a,double b,double r,double h) :Circle(a,b,r),height(h){} void Cylinder::setHeight(double h) { height=h; } double Cylinder::getHeight( ) { return height; } double Cylinder::area( ) { return 2*Circle::area( )+2*3.14*radius*height; } double Cylinder::volume() { return Circle::area()*height; } void Cylinder::show() { cout<<"Center=("<<x<<","<<y<<"), r="<<radius<<", h="<<height <<"\narea="<<area( )<<", volume="<<volume( )<<endl; } int main( ) { Cylinder cy1(3,4,5,10); cout<<"原圆柱:"; cy1.show(); cy1.setHeight(12); cy1.setRadius(7); cy1.setPoint(1,1); cout<<"现圆柱:"; cy1.show(); return 0; }
运行结果:
知识点总结:
从这个程序中,我们可以深入体会到派生类的定义声明以及使用。
学习心得:
尝试从错误中汲取经验。
时间: 2024-10-09 20:17:07