(1)设计名为Shape的父类,派生出Rectangle类、Triangle类和Circle类。Shape类包含数据字段:color, x a Ind y, x和y表示Shape对象的位置。Shape类提供了两个抽象方法:getArea()和getPerimeter()。
时间: 2024-05-03 14:16:55 浏览: 86
好的,可以这样设计:
```python
from abc import ABC, abstractmethod
class Shape(ABC):
def __init__(self, color, x, y):
self.color = color
self.x = x
self.y = y
@abstractmethod
def getArea(self):
pass
@abstractmethod
def getPerimeter(self):
pass
class Rectangle(Shape):
def __init__(self, color, x, y, width, height):
super().__init__(color, x, y)
self.width = width
self.height = height
def getArea(self):
return self.width * self.height
def getPerimeter(self):
return 2 * (self.width + self.height)
class Triangle(Shape):
def __init__(self, color, x, y, side1, side2, side3):
super().__init__(color, x, y)
self.side1 = side1
self.side2 = side2
self.side3 = side3
def getArea(self):
s = (self.side1 + self.side2 + self.side3) / 2
return (s * (s - self.side1) * (s - self.side2) * (s - self.side3)) ** 0.5
def getPerimeter(self):
return self.side1 + self.side2 + self.side3
class Circle(Shape):
def __init__(self, color, x, y, radius):
super().__init__(color, x, y)
self.radius = radius
def getArea(self):
return 3.14159 * self.radius ** 2
def getPerimeter(self):
return 2 * 3.14159 * self.radius
```
在这个设计中,`Shape` 是一个抽象类,它定义了两个抽象方法 `getArea` 和 `getPerimeter`,分别用于计算面积和周长。`Rectangle`、`Triangle` 和 `Circle` 类都继承自 `Shape`,并实现了这两个方法。同时,它们还有自己的属性,如矩形的宽和高、三角形的三边长、圆的半径等。在实例化这些类的时候,需要提供它们的属性值,如颜色、位置等。
阅读全文