设计一个抽象类Shape,在此基础上派生出类Rectangle和类Cirtle,二者都具有计算对象面积的函数getArea()以及计算周长的函数getPerim
时间: 2024-03-02 16:49:29 浏览: 120
用C++程序求不同形状的面积
eter()。请问你如何实现这个抽象类和派生类的设计?
好的,我来回答你的问题。针对这个问题,我们可以设计如下的抽象类Shape和派生类Rectangle和Circle:
```python
import math
class Shape:
def getArea(self):
pass
def getPerimeter(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 getPerimeter(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 getPerimeter(self):
return 2 * math.pi * self.radius
```
在这个设计中,我们定义了一个抽象类Shape,其中包含了两个抽象方法getArea和getPerimeter。这两个方法在抽象类中没有具体的实现,而是留给具体的派生类去实现。
然后,我们定义了两个具体的派生类Rectangle和Circle,分别用来计算矩形和圆形的面积和周长。这两个派生类都继承了Shape类,并实现了抽象方法getArea和getPerimeter。在Rectangle类中,我们定义了矩形的宽度和高度属性,并在getArea和getPerimeter方法中根据公式计算出面积和周长。在Circle类中,我们定义了圆形的半径属性,并在getArea和getPerimeter方法中根据公式计算出面积和周长。
这样,我们就实现了一个简单的抽象类和派生类的设计,可以用来计算矩形和圆形的面积和周长。
阅读全文