编写一个程序中设计一个抽象类Shape,在此基础上派生出类Rectangle和类Circle,二者都具有计算对象面积的函数getArea()以及计算对象周长的函数getPerim()。
时间: 2024-03-09 08:47:31 浏览: 69
c++ 形状类Shape(派生出圆类Circle和矩形类Rectangle)
好的,以下是一个示例程序,演示如何使用这个抽象类和派生类来计算矩形和圆形的面积和周长。
```python
import math
from abc import ABC, abstractmethod
# 抽象类
class Shape(ABC):
@abstractmethod
def getArea(self):
pass
@abstractmethod
def getPerim(self):
pass
# 派生类:矩形
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def getArea(self):
return self.width * self.height
def getPerim(self):
return 2 * (self.width + self.height)
# 派生类:圆形
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def getArea(self):
return math.pi * self.radius ** 2
def getPerim(self):
return 2 * math.pi * self.radius
# 测试程序
r = Rectangle(4, 5)
print("矩形的面积为:", r.getArea())
print("矩形的周长为:", r.getPerim())
c = Circle(3)
print("圆形的面积为:", c.getArea())
print("圆形的周长为:", c.getPerim())
```
在这个程序中,我们首先定义了一个抽象类Shape,其中包含了getArea()和getPerim()两个抽象方法。然后我们派生出了两个具体类Rectangle和Circle,这两个类分别代表矩形和圆形,它们都实现了getArea()和getPerim()方法。
接着,在测试程序中,我们分别创建了一个矩形对象r和一个圆形对象c,然后分别调用它们的getArea()和getPerim()方法来计算它们的面积和周长。最后,我们将计算结果打印出来。运行程序后,输出结果如下:
```
矩形的面积为: 20
矩形的周长为: 18
圆形的面积为: 28.274333882308138
圆形的周长为: 18.84955592153876
```
可以看到,我们成功地使用抽象类和派生类来计算了矩形和圆形的面积和周长。
阅读全文