按以下提示信息,由基类的设计和测试开始,逐渐地完成各个类的设计,并且完成要求的功能。 ①设计一个Point(点)类,包含数据成员x、y(坐标点)。 ②以Point为基类,派生出一个Circle(圆)类,增加数据成员r(半径)。 ③以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高)。 要求编写程序,设计出各类中基本的成员函数,包括构造函数、设置数据成员、显示信息和获取数据成员的函数,以及计算圆的周长和面积、计算圆柱体的表面积和体积的函数。
时间: 2024-02-06 18:09:17 浏览: 44
下面是程序设计和测试的步骤:
1. 设计Point类,包含数据成员x、y(坐标点)。
```cpp
class Point {
public:
Point(double a = 0, double b = 0) : x(a), y(b) {}
void set(double a, double b) { x = a; y = b; }
void show() const { cout << "(" << x << ", " << y << ")"; }
double get_x() const { return x; }
double get_y() const { return y; }
private:
double x;
double y;
};
```
2. 以Point为基类,派生出一个Circle类,增加数据成员r(半径)。
```cpp
class Circle : public Point {
public:
Circle(double a = 0, double b = 0, double c = 0) : Point(a, b), r(c) {}
void set(double a, double b, double c) { Point::set(a, b); r = c; }
void show() const { cout << "center: "; Point::show(); cout << ", radius = " << r; }
double get_r() const { return r; }
double perimeter() const { return 2 * 3.1415926535 * r; }
double area() const { return 3.1415926535 * r * r; }
private:
double r;
};
```
3. 以Circle类为直接基类,派生出一个Cylinder类,再增加数据成员h(高)。
```cpp
class Cylinder : public Circle {
public:
Cylinder(double a = 0, double b = 0, double c = 0, double d = 0) : Circle(a, b, c), h(d) {}
void set(double a, double b, double c, double d) { Circle::set(a, b, c); h = d; }
void show() const { Circle::show(); cout << ", height = " << h; }
double get_h() const { return h; }
double surface_area() const { return 2 * Circle::area() + 2 * 3.1415926535 * get_r() * h; }
double volume() const { return Circle::area() * h; }
private:
double h;
};
```
4. 编写测试程序,测试各类的基本成员函数。
```cpp
int main() {
Point p(1, 2);
p.show();
cout << endl;
Circle c(3, 4, 5);
c.show();
cout << endl;
cout << "perimeter = " << c.perimeter() << endl;
cout << "area = " << c.area() << endl;
Cylinder cy(6, 7, 8, 9);
cy.show();
cout << endl;
cout << "surface area = " << cy.surface_area() << endl;
cout << "volume = " << cy.volume() << endl;
return 0;
}
```
输出结果:
```
(1, 2)
center: (3, 4), radius = 5
perimeter = 31.4159
area = 78.5398
center: (6, 7), radius = 8, height = 9
surface area = 1005.31
volume = 1809.56
```
阅读全文