按以下提示信息,由基类的设计和测试开始,逐渐地完成各个类的设计,并且完成要求的功能。 ①设计一个Point(点)类,包含数据成员x、y(坐标点)。 ②以Point为基类,派生出一个Circle(圆)类,增加数据成员r(半径)。 ③以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高)。 要求编写程序,设计出各类中基本的成员函数,包括构造函数、设置数据成员、显示信息和获取数据成员的函数,以及计算圆的周长和面积、计算圆柱体的表面积和体积的函数。
时间: 2024-02-06 08:09:03 浏览: 62
基于Java和Kotlin的Android常用工具类和基类设计源码
下面是各个类的设计:
```cpp
// Point类
class Point {
protected:
double x; // x坐标
double y; // y坐标
public:
Point(double xx = 0, double yy = 0); // 构造函数
void setPoint(double xx, double yy); // 设置坐标
void display() const; // 显示坐标
double getX() const; // 获取x坐标
double getY() const; // 获取y坐标
};
// Circle类
class Circle : public Point {
protected:
double r; // 半径
public:
Circle(double rr = 0, double xx = 0, double yy = 0); // 构造函数
void setCircle(double rr, double xx, double yy); // 设置圆心和半径
double getR() const; // 获取半径
double getCircumference() const; // 计算周长
double getArea() const; // 计算面积
void display() const; // 显示信息
};
// Cylinder类
class Cylinder : public Circle {
protected:
double h; // 高
public:
Cylinder(double hh = 0, double rr = 0, double xx = 0, double yy = 0); // 构造函数
void setCylinder(double hh, double rr, double xx, double yy); // 设置圆柱体参数
double getH() const; // 获取高
double getSurfaceArea() const; // 计算表面积
double getVolume() const; // 计算体积
void display() const; // 显示信息
};
```
下面是各个类的实现:
```cpp
// Point类的实现
Point::Point(double xx, double yy)
{
x = xx;
y = yy;
}
void Point::setPoint(double xx, double yy)
{
x = xx;
y = yy;
}
void Point::display() const
{
cout << "(" << x << ", " << y << ")" << endl;
}
double Point::getX() const
{
return x;
}
double Point::getY() const
{
return y;
}
// Circle类的实现
Circle::Circle(double rr, double xx, double yy) : Point(xx, yy)
{
r = rr;
}
void Circle::setCircle(double rr, double xx, double yy)
{
r = rr;
x = xx;
y = yy;
}
double Circle::getR() const
{
return r;
}
double Circle::getCircumference() const
{
return 2 * PI * r;
}
double Circle::getArea() const
{
return PI * r * r;
}
void Circle::display() const
{
cout << "Circle: center ";
Point::display();
cout << "Radius: " << r << endl;
}
// Cylinder类的实现
Cylinder::Cylinder(double hh, double rr, double xx, double yy) : Circle(rr, xx, yy)
{
h = hh;
}
void Cylinder::setCylinder(double hh, double rr, double xx, double yy)
{
h = hh;
r = rr;
x = xx;
y = yy;
}
double Cylinder::getH() const
{
return h;
}
double Cylinder::getSurfaceArea() const
{
return 2 * Circle::getArea() + 2 * PI * r * h;
}
double Cylinder::getVolume() const
{
return Circle::getArea() * h;
}
void Cylinder::display() const
{
cout << "Cylinder: center ";
Point::display();
cout << "Radius: " << r << endl;
cout << "Height: " << h << endl;
}
```
使用示例:
```cpp
int main()
{
Point p(1, 2);
p.display();
Circle c(3, 4, 5);
c.display();
cout << "Circumference: " << c.getCircumference() << endl;
cout << "Area: " << c.getArea() << endl;
Cylinder cy(6, 7, 8, 9);
cy.display();
cout << "Surface Area: " << cy.getSurfaceArea() << endl;
cout << "Volume: " << cy.getVolume() << endl;
return 0;
}
```
阅读全文