/* *Copyright(C) 2016,计算机与控制工程学院 *All rights reserved. *文件名:test.cpp *作者:张志新 *完成日期:2016年5月1日 *版本号:v1.0 * *问题描述:Point类h和Circle类和Cylinder类。 */ #include<iostream> using namespace std; class Point { protected: double x;//横坐标 double y;//纵坐标 public: Point(double x=0,double y=0); Point(); double getX() const { return x; } double getY() const { return y; } void setPoint(double a,double b); void display(); }; void Point::setPoint(double a,double b) { x=a; y=b; } void Point::display() { cout<<x<<","<<y<<endl; } Point::Point(double a,double b):x(a),y(b){} class Circle:public Point { protected: double radius; public: Circle(double x=0,double y=0,double radius=0 );//构造函数(x,y是基类里的变量) void setRadius(double); //设置半径值 double getRadius( ) const; //读取半径值 double area ( ) const; //计算圆面积 void show(); }; Circle::Circle(double a,double b,double r ):Point(a,b),radius(r){} void Circle::setRadius(double c)//设置元的半径 { radius=c; } double Circle::getRadius( )const//得到圆的半径 { return radius; } double Circle::area ()const//计算圆的面积 { return 3.1415926*radius*radius; } void Circle::show()//输出这个圆的信息 { cout<<"此圆原点为:("<<x<<","<<y<<") 半径为:"<<radius<<" 面积为:"<<area()<<endl; } class Cylinder:public Circle { protected: double height;//增加的高 public: Cylinder (double x=0,double y=0,double r=0,double h=0); double volume() const;//球体积 double area() const;//求面积 double getHeight()const;//得到高度 void setHeight(double h);//设置高度 void show();//显示圆柱的信息 }; Cylinder::Cylinder(double a,double b,double r,double h) :Circle(a,b,r),height(h){} double Cylinder::volume() const//求圆柱的体积 { return Circle::area()*height; } double Cylinder::area() const//求圆柱的表面积 { return Circle::area()*2+2*3.1415926*radius*height; } double Cylinder::getHeight()const//得到圆柱的高 { return height; } void Cylinder::setHeight(double h)//设置圆柱的高 { height=h; } void Cylinder::show() { cout<<"底面圆原点为:("<<x<<","<<y<<") 半径为:"<<radius<<" 面积为:"<<area()<<endl; cout<<"圆柱的体积为:"<<volume()<<endl; cout<<"表面积为:"<<area()<<endl; cout<<endl; } int main() { Cylinder p1(1.8,1.5,1,20); p1.show(); p1.setRadius(3); cout<<"更改半径后:"<<endl; p1.show(); p1.setHeight(5); cout<<"更该高度后:"<<endl; p1.show(); return 0; }
学习心得:
在这个项目中通过一步一步的增加难度我对类的继承更加进一步的了解,在这中间也出现几个小的问题在写成员函数的时候忘记了些括号,导致了错误,还有考虑有时候太不周到了在一开始定义点类的时候用的int 型的有点太理想化了最后改成了doouble型。