题目二:编写程序计算长方形和圆形的面积,要求在程序中定义长方形类和圆形类,在类中构造计算面积函数。用户在主程序中输入长方形的长和宽,以及圆形的半径,然后输出长方形和圆形的面积(Π=3.14)。
时间: 2025-06-21 16:29:51 浏览: 15
### 定义长方形类和圆形类
为了实现能够计算面积的长方形类 `Rectangle` 和圆形类 `Circle`,可以采用面向对象编程的方式。下面将以 C++ 和 Python 两种常见的编程语言为例展示如何定义这两个类。
#### 使用 C++
在 C++ 中,可以通过定义两个具体类继承自一个共同的抽象基类 `Shape` 来实现多态性[^2]。这里先给出完整的代码框架:
```cpp
#include <iostream>
using namespace std;
// 抽象基类 Shape
class Shape {
public:
virtual double getArea() const = 0; // 纯虚函数声明
};
// 圆形类 Circle 继承于 Shape 类
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {} // 构造函数初始化列表设置半径
double getArea() const override { // 实现纯虚函数
return 3.14 * radius * radius;
}
};
// 长方形类 Rectangle 继承于 Shape 类
class Rectangle : public Shape {
private:
double width, height;
public:
Rectangle(double w, double h) : width(w), height(h) {} // 初始化宽度和高度
double getArea() const override { // 覆盖父类的方法
return width * height;
}
};
```
这段程序展示了如何利用继承机制创建具有相同接口的不同形状的对象,并通过重写基类中的成员函数实现了特定功能——即计算各自的面积。
对于每个子类而言,构造器负责接收必要的参数并完成相应属性的初始化工作;而 `getArea()` 方法则用来返回该几何图形对应的面积值。
#### 使用 Python
同样的逻辑也可以很容易地转换成 Python 版本:
```python
from abc import ABC, abstractmethod
# 抽象基类 Shape
class Shape(ABC):
@abstractmethod
def area(self):
pass
# 圆形类 Circle 继承于 Shape 类
class Circle(Shape):
pi = 3.14
def __init__(self, radius):
super().__init__()
self.radius = radius
def area(self):
return self.pi * (self.radius ** 2)
# 长方形类 Rectangle 继承于 Shape 类
class Rectangle(Shape):
def __init__(self, length, breadth):
super().__init__()
self.length = length
self.breadth = breadth
def area(self):
return self.length * self.breadth
```
在这个例子中,Python 的内置模块 `abc` 提供了支持抽象基类的功能,使得可以在不提供任何实际实现的情况下声明方法签名。这样做的好处是可以强制所有派生类都必须实现这些被标记为抽象的方法[^5]。
阅读全文
相关推荐
















