定义Tri,Ladder和Circle,分别为三角形、梯形和圆,定义计算其面积的方法。改进这个代码,定义一个图形类,具有计算面积的抽象方法,然后通过子类来实现前面三个类的定义,并测试运行。
时间: 2024-10-10 08:02:56 浏览: 32
快速碰撞检测:识别由三角形集合定义的两个对象之间的第一次碰撞-matlab开发
首先,让我们定义一个名为`Shape`的抽象基类,它包含一个抽象方法`calculate_area()`,表示所有图形都有一个计算面积的能力:
```python
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def calculate_area(self):
pass
```
接着,我们为每个具体的图形——三角形`Triangle`、梯形`Trapezoid`和圆形`Circle`——分别定义类并实现`calculate_area()`方法:
```python
class Triangle(Shape):
def __init__(self, base, height):
self.base = base
self.height = height
def calculate_area(self):
return 0.5 * self.base * self.height
class Trapezoid(Shape):
def __init__(self, a, b, height):
self.a = a
self.b = b
self.height = height
def calculate_area(self):
return 0.5 * (self.a + self.b) * self.height
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def calculate_area(self):
return 3.14159 * (self.radius ** 2)
```
现在我们可以创建这些图形的对象并测试它们的面积:
```python
triangle = Triangle(3, 4)
trapezoid = Trapezoid(5, 8, 6)
circle = Circle(2)
print("Triangle area:", triangle.calculate_area())
print("Trapezoid area:", trapezoid.calculate_area())
print("Circle area:", circle.calculate_area())
```
在这个例子中,`Shape`是抽象类,而`Triangle`、`Trapezoid`和`Circle`是它的子类,各自实现了`calculate_area()`方法。
阅读全文