第十一周项目4——类族的设计
来源:互联网 发布:ab plc编程软件中文版 编辑:程序博客网 时间:2024/06/08 10:37
按以下的提示,由基类的设计和测试开始,逐渐地完成各个类的设计,求出圆格柱体的表面积、体积并输出并且完成要求的计算任务:
(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; }protected: double x,y; //点的横坐标和纵坐标};class Circle:public Point{ public: Circle(double x0,double y0,double r):Point(x0,y0) { radius=r; } double getR() const { return radius; } double area() const; protected: double radius;};double Circle::area() const{ return 3.14159*radius*radius;}class Cylinder:public Circle{public: Cylinder (double x0,double y0,double r,double h):Circle(x0,y0,r)//构造函数 { height=h; } double getH() const { return height; } double area( ) const; //计算圆柱表面积 double volume( ) const; //计算圆柱体积protected: double height; //圆柱高};double Cylinder::area( ) const{ return 2*Circle::area( )+2*3.14159*radius*height;}double Cylinder::volume() const{ return Circle::area()*height;}int main( ){ Cylinder cy1(3.5,6.4,5.2,10); cout<<"\noriginal cylinder:\nx="<<cy1.getX()<<", y="<<cy1.getY()<<", r=" <<cy1.getR()<<", h="<<cy1.getH()<<"\narea="<<cy1.area() <<",volume="<<cy1.volume()<<endl; return 0;}<img src="http://img.blog.csdn.net/20150520141051315?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3l6OTUwNjIw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
代码如下:
#include<iostream>#include<Cmath>using namespace std;class Point //定义坐标点类{public: Point():x(0),y(0) {}; Point(double x0, double y0):x(x0), y(y0) {}; void setpoint(double,double); double getX() { return x; } double getY() { return y; } friend ostream&operator<<(ostream&,Point&);protected: double x,y; //点的横坐标和纵坐标};void Point::setpoint(double x0,double y0){ x=x0; y=y0;}ostream&operator<<(ostream&output,Point&p){ cout<<"["<<p.x<<","<<p.y<<"]"<<endl; return cout;}class Circle:public Point{ public: Circle(double x0,double y0,double r):Point(x0,y0) { radius=r; } void setRadius(double); double getR() const { return radius; } double area() const; friend ostream&operator<<(ostream&,const Circle&); protected: double radius;};void Circle::setRadius(double r){ radius=r;}double Circle::area() const{ return 3.14159*radius*radius;}ostream&operator<<(ostream&output,const Circle&c){ cout<<"Center=["<<c.x<<", "<<c.y<<"], r="<<c.radius<<", area="<<c.area( )<<endl; return cout;}class Cylinder:public Circle{public: Cylinder (double x0,double y0,double r,double h):Circle(x0,y0,r)//构造函数 { height=h; } void setHeight(double); double getH() const { return height; } double area( ) const; //计算圆柱表面积 double volume( ) const; //计算圆柱体积 friend ostream& operator<<(ostream&,const Cylinder&);//重载运算符“<<”protected: double height; //圆柱高};void Cylinder::setHeight(double h){ height=h;}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.getR()<<", h="<<cy1.getH()<<"\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;}<img src="http://img.blog.csdn.net/20150520140040294?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3l6OTUwNjIw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
总结:第一次编写这个程序时候感觉用不到运算符重在函数就感觉怪怪的,但是运行时候怎么感觉是对的,结果看了老师的才明白自己审题有漏洞。才知道运算符重载函数是怎么应用的。
0 0
- 第十一周项目4——类族的设计
- 第十一周项目4——类族的设计
- 第十一周项目四——类族的设计
- 第十一周项目4-类族设计
- 第十一周上机实践项目4——类族的设计(1)
- 第十一周上机实践项目4——类族的设计(2)
- 第十一周上机实践项目4——类族的设计(3)
- 第十一周项目4- 类族的设计
- 第十一周项目4 - 类族的设计
- 第十一周项目4类族的设计
- 第十一周【项目4 - 类族的设计】(1)
- 第十一周【项目4 - 类族的设计】(2)
- 第十一周项目4-2:类族的设计-圆类
- 第十一周项目4 - 类族的设计
- 第十一周 项目4-类族的设计(2)
- 第十一周项目4-类族的设计
- 第十一周上机项目4 类族的设计
- 第十一周 项目4 类族的设计(1)
- 正则表达式参考 TCL语言版收藏
- Java设计模式——装饰者模式
- php 文件下载
- SQL SERVER DBA 只给某用户开通 对存储过程的readonly权限
- hibernate4 比 hibernate3 优点
- 第十一周项目4——类族的设计
- 简单的几个shell脚本四
- C语言 判断给定数组是否为二叉查找树后序遍历结果
- curl伪造reffer抓取图片资源的方法
- jQuery 效果 - animate() 方法
- activiti工作流
- Tomcat源码下载地址
- hibernate4替换hibernateTemplate
- 找回状态,找回激情