第十一周上机实践项目1(3):点-圆-圆柱类族的设计

来源:互联网 发布:中文msds数据库 编辑:程序博客网 时间:2024/05/18 00:34
/* *Copyright(c) 2016.烟台大学计算机与控制工程学院 *ALL rights  reserved. *文件名称:text11.cpp *作者:赵子琳 *完成日期:2016年5月19日 *问题描述:再以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() const    {        return x;    }//读x坐标    double getY() const    {        return y;    }//读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() const;//读取半径值    double area() const;//计算半径值    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( ) const{    return radius;}double Circle::area() const{    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( ) const;                    //读取圆柱高    double area( ) const;                         //计算圆柱表面积    double volume( ) const;                       //计算圆柱体积    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( ) const{    return height;}double Cylinder::area( ) const{    return 2*Circle::area( )+2*3.14159*radius*height;}double Cylinder::volume() const{    return Circle::area()*height;}void Cylinder::show(){    cout<<"Center=["<<x<<","<<y<<"], r="<<radius<<", h="<<height        <<"\narea="<<area( )<<", volume="<<volume( )<<endl;}int main( ){    Cylinder cy1(5,8,6,10);    cout<<"\noriginal cylinder:\nx=";    cy1.show();    cy1.setHeight(8.5);    cy1.setRadius(6.5);    cy1.setPoint(4,5);    cout<<"\nnew cylinder:\n";    cy1.show();    return 0;}

0 0
原创粉丝点击