按以下提示信息,由基类的设计和测试开始,逐渐地完成各个类的设计,并且完成要求的功能。 ①设计一个Point(点)类,包含数据成员x、y(坐标点)。 ②以Point为基类,派生出一个Circle(圆)类,增加数据成员r(半径)。 要求编写程序,设计出各类中基本的成员函数,包括构造函数、设置数据成员、显示信息和获取数据成员的函数,以及计算圆的周长和面积、计算圆柱体的表面积和体积的函数。
时间: 2023-12-03 19:47:04 浏览: 96
基于Java和Kotlin的Android常用工具类和基类设计源码
好的,我来帮您完成这个任务。我们可以按照以下步骤进行:
1. 设计Point类
Point类是一个基类,包含数据成员x和y,表示点的坐标。我们可以定义如下:
```c++
class Point {
public:
Point(double x = 0, double y = 0) : m_x(x), m_y(y) {}
void setX(double x) { m_x = x; }
void setY(double y) { m_y = y; }
double getX() const { return m_x; }
double getY() const { return m_y; }
void display() const { std::cout << "(" << m_x << ", " << m_y << ")"; }
private:
double m_x;
double m_y;
};
```
2. 设计Circle类
Circle类是从Point类派生出来的,增加了数据成员r,表示圆的半径。我们需要计算圆的周长和面积,以及计算圆柱体的表面积和体积。
```c++
class Circle : public Point {
public:
Circle(double x = 0, double y = 0, double r = 0) : Point(x, y), m_r(r) {}
void setR(double r) { m_r = r; }
double getR() const { return m_r; }
double getPerimeter() const { return 2 * 3.1415926 * m_r; }
double getArea() const { return 3.1415926 * m_r * m_r; }
double getCylinderSurfaceArea(double h) const { return 2 * 3.1415926 * m_r * h + 2 * getArea(); }
double getCylinderVolume(double h) const { return getArea() * h; }
void display() const { std::cout << "Center: "; Point::display(); std::cout << ", Radius: " << m_r; }
private:
double m_r;
};
```
在Circle类中,我们重载了Point类的构造函数,并增加了setR和getR函数,分别用于设置和获取圆的半径。在派生类中可以使用基类的成员函数,例如在Circle类的display函数中,我们先调用基类的display函数,再输出半径。
3. 测试
我们可以编写一个简单的测试程序,来测试我们设计的类是否正确。
```c++
int main() {
Point p(1, 2);
std::cout << "Point: ";
p.display();
std::cout << std::endl;
Circle c(3, 4, 5);
std::cout << "Circle: ";
c.display();
std::cout << ", Perimeter: " << c.getPerimeter() << ", Area: " << c.getArea() << std::endl;
std::cout << "Cylinder: Surface Area: " << c.getCylinderSurfaceArea(6) << ", Volume: " << c.getCylinderVolume(6) << std::endl;
return 0;
}
```
输出结果:
```
Point: (1, 2)
Circle: Center: (3, 4), Radius: 5, Perimeter: 31.4159, Area: 78.5398
Cylinder: Surface Area: 376.991, Volume: 471.238
```
可以看到,我们设计的类能够正确地计算圆的周长和面积,以及计算圆柱体的表面积和体积。任务完成!
阅读全文