在图形系统中,有一个抽象类Figure,由它派生出圆形、正方形、矩形、梯形和三角形五个类。例如,正方形有边长,矩形有长度和宽度数据成员,圆形有半径。梯形可以有上底、下底和高数据成员。在一个设计良好的系统中,这些类派生自一个公共类图。在本系统中,将Area()函数定义为虚函数,分别计算这些图形的面积,并计算其面积之和。在主要功能方面: 1)使用基类Figure定义一个数组,每个元素是5个派生类的对象(实例); 2)输出每个派生类对象的面积; 3)输出其面积之和; 4)主功能除实现上述功能外,还应包括以下文件:
时间: 2024-02-01 22:15:27 浏览: 129
以下是一个简单的实现:
```c++
#include <iostream>
using namespace std;
class Figure {
public:
virtual double Area() = 0; // 纯虚函数
};
class Circle : public Figure {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double Area() {
return 3.14 * radius * radius;
}
};
class Square : public Figure {
private:
double side;
public:
Square(double s) : side(s) {}
double Area() {
return side * side;
}
};
class Rectangle : public Figure {
private:
double length, width;
public:
Rectangle(double l, double w) : length(l), width(w) {}
double Area() {
return length * width;
}
};
class Trapezoid : public Figure {
private:
double upper, lower, height;
public:
Trapezoid(double u, double l, double h) : upper(u), lower(l), height(h) {}
double Area() {
return (upper + lower) * height / 2;
}
};
class Triangle : public Figure {
private:
double base, height;
public:
Triangle(double b, double h) : base(b), height(h) {}
double Area() {
return base * height / 2;
}
};
int main() {
Figure* figs[5];
figs[0] = new Circle(2);
figs[1] = new Square(3);
figs[2] = new Rectangle(4, 5);
figs[3] = new Trapezoid(2, 5, 3);
figs[4] = new Triangle(2, 3);
double total = 0;
for (int i = 0; i < 5; i++) {
cout << "Area of figure " << i << ": " << figs[i]->Area() << endl;
total += figs[i]->Area();
}
cout << "Total area: " << total << endl;
return 0;
}
```
这里定义了一个Figure基类,它只包含一个纯虚函数Area(),用于计算图形的面积。然后派生出五个具体的图形类,每个类都需要实现Area()函数。在主函数中,定义了一个Figure指针数组,分别指向五个派生类的对象。循环输出每个图形的面积,并计算总面积。
阅读全文