定义抽象类Shape,包含getArea( )和getPerimeter( )两个抽象方法 (1)定义Rectangle类表示矩形,继承Shape类,实现其中的getPerimeter()方法和getArea()方法。 (2)定义Square类表示正方形,继承Shape类,实现其中的getPerimeter()方法和getArea()方法。 (3)编写测试程序:随机生成10个边长小于100的Rectangle或Square的随机对象,分别输出所有图形的面积之和与周长之和。
时间: 2024-03-25 10:39:28 浏览: 51
编写一个抽象类Shape
4星 · 用户满意度95%
好的,以下是代码实现:
```python
import random
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def getArea(self):
pass
@abstractmethod
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 Square(Rectangle):
def __init__(self, side):
super().__init__(side, side)
def getArea(self):
return super().getArea()
def getPerimeter(self):
return super().getPerimeter()
shapes = []
for i in range(10):
if random.randint(0, 1):
length = random.randint(1, 99)
width = random.randint(1, 99)
shape = Rectangle(length, width)
else:
side = random.randint(1, 99)
shape = Square(side)
shapes.append(shape)
total_area = 0
total_perimeter = 0
for shape in shapes:
total_area += shape.getArea()
total_perimeter += shape.getPerimeter()
print("所有图形的面积之和为:", total_area)
print("所有图形的周长之和为:", total_perimeter)
```
运行结果可能会有所不同,因为随机生成了10个对象:
```
所有图形的面积之和为: 28719
所有图形的周长之和为: 1202
```
希望这段代码能够解决您的问题!
阅读全文