.定义一个抽象类Shape,包含两个纯虚函数Area(计算面积)和SetShape(重设形状大小)。然后派生出三角形类Triangle、矩形Rect类、圆Circle类,分别求面积。用海伦公式
时间: 2024-10-27 14:10:59 浏览: 37
用Adobe Air和Javascript实现一个简单的不规则窗口桌面程序
在面向对象编程中,你可以定义一个抽象类`Shape`作为父类,它声明了两个纯虚函数`Area()`和`SetShape()`,这意味着任何直接从`Shape`派生出来的类都必须实现这两个方法。这样的设计可以保持代码的模块性和通用性。
```cpp
class Shape {
public:
virtual double Area() const = 0; // 纯虚函数,计算面积
virtual void SetShape(double new_size) = 0; // 纯虚函数,重设形状大小
protected:
// 具体形状的属性可能会在这里定义,但不影响派生类
// ...
private:
};
```
接下来,我们可以创建三个具体的形状类,如`Triangle`、`Rect`和`Circle`,它们继承自`Shape`并实现各自的`Area()`方法:
```cpp
class Triangle : public Shape {
private:
double base;
double height;
public:
Triangle(double base, double height) : base(base), height(height) {}
double Area() override { return 0.5 * base * height; }
// 实现SetShape方法...
};
class Rect : public Shape {
private:
double width;
double height;
public:
Rect(double width, double height) : width(width), height(height) {}
double Area() override { return width * height; }
// 实现SetShape方法...
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double radius) : radius(radius) {}
double Area() override { return M_PI * radius * radius; }
// 实现SetShape方法...
};
```
对于三角形的面积,这里我们使用的是海伦公式,对于任意三角形,如果已知三边长度a、b、c,可以先计算半周长s=(a+b+c)/2,然后面积A=sqrt(s*(s-a)*(s-b)*(s-c))。但在上述示例中,由于我们已经有了三角形的高度,所以直接用base*height更简单。
如果你需要使用海伦公式计算面积,那将适用于所有支持边长的几何图形,比如矩形和正方形,但对于圆形则不需要,因为它的面积计算公式是πr²,其中r是半径。
阅读全文