2.求形状面积周长(25分) 设计接口 Shape,其中的 getarea方法用于求一个形状的面积, getperimeter 求一个形状的周长。(5分) 用矩形类 Rectangle和圆类 Circle实现上述接口,属性分别包括:长 length 及半径 radius:构造方法为各自的属性赋值。(10分) 设计一个Pen类,其中有一个类方法show,传递一个接口回调的 Shape变量 的周长和面积。(5分) 在主类Test中生成一个 Shape接口变量sh,分别回调 Rectangle和 Circle 用show方法输出各自的周长和面积的信息。(5分)
时间: 2024-03-17 19:42:51 浏览: 65
【Python--抽象类和抽象方法】--求三角形、矩形、圆的面积和周长的编程题(csdn)————程序.pdf
5星 · 资源好评率100%
好的,以下是代码实现:
```python
# 定义形状接口
class Shape:
def getarea(self):
pass
def getperimeter(self):
pass
# 矩形类
class Rectangle(Shape):
def __init__(self, length, width):
self.length = length
self.width = width
def getarea(self):
return self.length * self.width
def getperimeter(self):
return 2 * (self.length + self.width)
# 圆类
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def getarea(self):
return 3.14 * self.radius * self.radius
def getperimeter(self):
return 2 * 3.14 * self.radius
# Pen类
class Pen:
@classmethod
def show(cls, shape):
print("面积为:", shape.getarea())
print("周长为:", shape.getperimeter())
# 主类Test
if __name__ == '__main__':
r = Rectangle(4, 5)
c = Circle(6)
shapes = [r, c]
for shape in shapes:
Pen.show(shape)
```
输出结果为:
```
面积为: 20
周长为: 18
面积为: 113.04
周长为: 37.68
```
阅读全文