第11周项目4 类组的设计

来源:互联网 发布:赛维网络加班有工资吗 编辑:程序博客网 时间:2024/06/09 19:35
/**Copyright (c)2015,烟台大学计算机与控制工程学院*All rights reserved.*文件名称:score.cpp*作    者:惠睿*完成日期:2015年5月28日*版 本 号:v1.0**问题描述:由基类的设计和测试开始,逐渐完成个各类的设计。*程序输入:无输入。*程序输出:输出表面积,体积。*/#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坐标friend ostream & operator<<(ostream &,const Point &);//重载运算符“<<”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;}ostream & operator<<(ostream &output,const Point &p){output<<"["<<p.x<<","<<p.y<<"]"<<endl;return output;}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;                   //计算圆面积friend ostream &operator<<(ostream &,const Circle &);//重载运算符“<<”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;}ostream &operator<<(ostream &output,const Circle &c){output<<"Center=["<<c.x<<", "<<c.y<<"], r="<<c.radius<<", area="<<c.area( )<<endl;return output;}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;                       //计算圆柱体积friend ostream& operator<<(ostream&,const Cylinder&);//重载运算符“<<”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;}ostream &operator<<(ostream &output,const Cylinder& cy){output<<"Center=["<<cy.x<<","<<cy.y<<"], r="<<cy.radius<<", h="<<cy.height<<"\narea="<<cy.area( )<<", volume="<<cy.volume( )<<endl;return output;}int main( ){Cylinder cy1(3.5,6.4,5.2,10);cout<<"\noriginal cylinder:\nx="<<cy1.getX( )<<", y="<<cy1.getY( )<<", r="<<cy1.getRadius( )<<", h="<<cy1.getHeight( )<<"\narea="<<cy1.area()<<",volume="<<cy1.volume()<<endl;cy1.setHeight(15);cy1.setRadius(7.5);cy1.setPoint(5,5);cout<<"\nnew cylinder:\n"<<cy1;return 0;}


运行结果:

0 0
原创粉丝点击