/*
*Copyright (c)2016,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:main.cpp
*作 者:郭永恒
*完成日期:2016年5月2日
*版 本 号:v1.0
*
*问题描述:先设计一个点类,再以点类为基类设计一个圆类,再以圆类为基类设计一个圆柱类
*/
类:
#include <iostream>
using namespace std;
#define PI 3.1415926
class Point
{
public:
Point(double x = 0,double y = 0):X(x),Y(y){}
double getX(){return X;}
double getY(){return Y;}
void setData()
{
cout << "input X,Y" << endl;
cin >> X >> Y;
}
void show()
{
cout << "X:" << X << " Y:" << Y << endl;
}
private:
double X;
double Y;
};
class Circle:public Point
{
public:
Circle(double x = 0,double y = 0,double r = 0):Point(x,y),R(r){}
double area(){return R*R*PI;}
double primeter(){return 2*PI*R;}//求周长
double getR(){return R;}
void setData()
{
Point::setData();
cout << "input R" << endl;
cin >> R;
}
void show()
{
Point::show();
cout << "R:" << R << " BottomArea:" << Circle::area() << endl;
}
private:
double R;
};
class Cylinder:public Circle
{
public:
Cylinder(double x, double y, double r, double h):Circle(x,y,r),H(h){}
double volume(){return Circle::area()*H;}
double area(){return Circle::area()*2+Circle::primeter()*H;}
double getH(){return H;}
void setData()
{
Circle::setData();
cout << "input H" << endl;
cin >> H ;
}
void show()
{
Circle::show();
cout << "H:" << H << " Area:" << area()<< " Volume:" << volume() << endl;
}
private:
double H;
};
测试函数:
int main()
{
Point p(1,1);
p.show();
Circle O(1,1,1);
O.show();
Cylinder V(1,1,1,2);
V.show();
V.setData();
V.show();
return 0;
}
运行结果: