第十一周项目一点圆圆柱类族的设计3圆柱

/* 
 *Copyright(c)2016,烟台大学计算机与控制工程学院 
 *All right reserved. 
 *文件名称:dfg.cpp 
 *作    者:闫舒 
 *完成日期:2016年6月12日 
 *版 本 号:vc++6.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      //circle是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;  
}  

运行结果:




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值