第十一周【项目4 - 类族的设计】(3)最终版
2015-05-20 17:32
429 查看
问题及代码:
/* 【项目4 - 类族的设计】 *Copyright (c) 2014,烟台大学计算机学院 *ALL right reserved *文件名:学生成绩统计 *作者;童宇 *完成日期:2015 年5 月 20日 *版本号v1.0 *问题描述: 求出圆格柱体的表面积、体积并输出并且完成要求的计算任务: (1)先建立一个Point(点)类,包含数据成员x,y(坐标点),实现需要的成员函数,并设计main函数完成测试; (2)以Point为基类,派生出一个Circle(圆)类,增加数据成员r(半径),以及求面积的成员函数area,实现其他需要的成员函数,设计main函数完成测试; (3)再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高),,以及求圆柱表面积的成员函数area和求圆柱体积的成员函数volume,实现需要的成员函数,并设计main函数完成测试。 要求编写程序,设计出各类中“需要的成员函数”,包括构造函数、析构函数、修改数据成员和获取数据成员的公共接口、用于输出的重载运算符“<<”函数等。 *输入描述: *程序输出: */ #include<iostream> #include<Cmath> using namespace std; class Point //定义坐标点类 { public: Point():x(0),y(0) {}; Point(double x0, double y0):x(x0), y(y0) {}; double getX() { return x; } double getY() { return y; } void setPoint(double a,double b); //输出点的信息 friend ostream & operator<<(ostream & cout,Point &a); friend istream & operator>>(istream & cin,Point &a); protected: double x,y; //点的横坐标和纵坐标 }; void Point::setPoint(double a,double b) { x=a; y=b; } istream & operator>>(istream & cin,Point &a) { char c; cout<<"请输入一个点,格式:(x,y)"<<endl; cin>>c>>a.x>>c>>a.y>>c; return cin; } ostream & operator<<(ostream & cout,Point &a) { char c; cout<<"("<<a.x<<","<<a.y<<")"; return cout; } class Circle:public Point { public: Circle(double x=0,double y=0,double r=0):Point(x,y),radius(r) { } void setRadius(double); //设置半径值 double getRadius( ) const; //读取半径值 double area ( ) const; //计算圆面积 friend ostream &operator<<(ostream &,const Circle &);//重载运算符“<<” protected: double radius; }; 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<<"圆心坐标为:("<<c.x<<", "<<c.y<<") \t圆的半径为:"<<c.radius<<"\t圆的面积为:"<<c.area( )<<endl; return output; } class Cylinder:public Circle { public: Cylinder (double x=0,double y=0,double r=0,double h=0):Circle(x,y,r){height=h;} void setHeight(double); //设置圆柱高 double getHeight( ) const; //读取圆柱高 double area( ) const; //计算圆柱表面积 double volume( ) const; //计算圆柱体积 friend ostream& operator<<(ostream&,const Cylinder&);//重载运算符“<<” protected: double height; //圆柱高 }; //设置圆柱高 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<<"original 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; }
运行结果:
相关文章推荐
- 第十一周项目1.3— 点 圆 圆柱类族的设计
- 第十一周 课后实践:项目四——类族的设计
- 第十一周上机实践项目1(2):点-圆-圆柱类族的设计
- 第十一周上机实践项目1(3):点-圆-圆柱类族的设计
- 15第十一周项目四——类族的设计
- 第十一周项目训练8.3 圆,圆柱类族的设计
- 第十一周项目4 - 类族的设计
- 第十一周 项目4 - 类族的设计(1)点
- 第十周第十一周上机实践项目-项目1-3-点-圆-圆柱类族的设计
- 第十一周【项目1 - 点-圆-圆柱类族的设计1】
- 第十一周项目四 类族的设计(2)
- 第十一周项目1——点-圆-圆柱类族的设计
- 第十一周 项目四--类族的设计(2)
- 第十一周实践项目1.1-点-圆-圆柱类族的设计
- 第十一周项目4-类族的设计
- 第十一周上机实践项目4——类族的设计(1)
- 2015年第十一周项目四:类族的设计
- 第十一周 项目四--类族的设计(3)
- 第十一周项目4-类族的设计
- 第十一周项目1-点-圆-圆柱类族的设计(3)