第十一周实践项目1.3-点-圆-圆柱类族的设计
2016-05-06 12:48
417 查看
问题及代码:
知识点总结:
从这个程序中,我们可以深入体会到派生类的定义声明以及使用。
学习心得:
尝试从错误中汲取经验。
/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All right reserved. *文件名称:77.cpp *作 者:董凯琦 *完成日期:2016年5月6日 *版 本 号:v1.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 { 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; }运行结果:
知识点总结:
从这个程序中,我们可以深入体会到派生类的定义声明以及使用。
学习心得:
尝试从错误中汲取经验。
相关文章推荐
- Dom4j读取xml文档
- 九度 1188 约瑟夫环问题
- STL学习_List篇
- 关于c加加的一点思考
- STM32F4学习笔记2——时钟与复位系统
- 23种设计模式(2):工厂方法模式
- bootstrap初学备忘
- 深入理解计算机系统学习(1)
- Log4J日志配置详解
- 修改魅族和小米状态栏的文字颜色
- CentOS---网络配置详解
- 查看系统调用与信号
- Storm Spark Scala 混合代码快速编译打包jar方式,然后java风格使用(朋友咨询)
- mysqldump导出多个数据库
- KT: C 编码风格
- 【HUSTOJ】1069: 拐角II
- 《java入门第一季》之面向对象多态面试题(多态收尾)
- 《java入门第一季》之面向对象多态面试题(多态收尾)
- iOS---使用MJExtension 归档
- AAA