点,圆,圆柱体继承设计
点类
class Point
{
private:
int x, y; //点的x和y坐标
public:
Point(int x=0, int y=0); // 构造函数
void SetPoint(int, int); // 设置坐标
int GetX(){return x;} // 取私有变量x
int GetY(){return y;} // 取私有变量y
void Print(); // 输出点的坐标
}
类外定义函数
Point::Point(int a, int b)
{
SetPoint(a, b);
}
Point::SetPoint(int a, int b)
{
x = a;
y = b;
}
Point::Print()
{
cout << '[' << x << ", " << y << ']';
}
从点类派生出圆类
class Circle::public Point
{
double radius;
public:
Circle(int x=0, int y=0, double r=0.0);
void SetRadius( double ); //设置半径
double GetRadius(); //取半径
double Area(); //计算面积
void Print(); //输出圆心坐标和半径
};
类外定义函数
Circle::Circle(int a, int b, double r): Point(a,b)
{
SetRadius(r);
}
void Circle::SetRadius( double r ){ radius = ( r >= 0 ? r : 0 );}
double Circle::GetRadius(){ return radius; }
double Circle::Area() { return 3.14159 * radius * radius;}
void Circle::Print()
{
cout << "Center = ";
Point::Print();
cout << "; Radius = " << radius << endl;
}
从圆类派生出圆柱体类
class Cylinder: public Circle
{
double high;
public:
Cylinder(int x, int y, double r, double h);
void Set_data(int x, int y, double r, double h); //修改数据
double Area(); //计算表面积
double Volume(); //计算体积
void Print(); //输出圆心坐标和半径
};
类外定义函数
Cylinder::Cylinder(int x, int y, double r, double h):Circle(x, y, r)
{
high = h;
}
void Cylinder::Set_data(int x, int y, double r, double h)
{
SetPoint(x, y);
SetRadius(r);
high= h;
}
double Cylinder::Volume()
{
return Circle::Area() * high;
}
double Cylinder::Area()
{
double r = GetRadius();
return 2*3.14159 * r * r + 2 * 3.1415 * r * high;
}
主函数测试
#include <iostream>
using namespace std;
int main()
{
cout << "测试点类" << endl;
Point p(30, 50);
p.Print();
cout << endl << endl << "测试圆类" << endl;
Circle c(120, 80, 10.0);
cout << "圆心:";
c.Point::Print();
cout << "\n圆面积: " << c.Area() << endl;
cout<<endl<<"测试圆柱体类"<<endl;
Cylinder cy(240, 160, 10.0, 10.0);
cout << "圆柱体中心点: ";
cy.Point::Print();
cout << "\n圆柱体圆面积:" << cy.Circle::Area() << endl;
cout << "圆柱体表面积:" << cy.Area() <<endl;
cout << "圆柱体体积:" << cy.Volume() <<endl;
return 0;
}
点->长方形->长方体
#include<iostream>
using namespace std;
class point {
int x, y;
public:
point() {
x = 0;
y = 0;
};
void setdata(int x, int y) {
this->x = x;
(*this).y = y;
};
point(int x, int y) {
setdata(x, y);
};
void zb() {
cout << '(' << x << ',' << y << ')' << endl;
};
~point();
};
class square: public point {
int length, width;
point center;
public:
square():point(0, 0)
{
width = 0;
length = 0;
}
void setdata(int l, int w) {
length = l;
width = w;
};
square(int x, int y, int l, int w): point(x, y)
{
setdata(l, w);
};
~square();
};
class cube:protected square {
int hight;
public:
void setdata(int h)
{
hight=h;
}
cube():square(0, 0, 0, 0)
{
hight = 0;
}
cube(int x,int y,int l,int w,int h):square(x,y,l,w)
{
setdata(h);
}
~cube();
};