1.设计一个“图形”类shape,基类部分的共同特征(如宽等)和方法(如初始化、求面积等)。以此为基础,派生出矩形rectangle、圆形circle。二者都有计算面积的函数以及计算周长的函数。并编写相应主函数进行测试。
时间: 2023-09-06 11:05:04 浏览: 218
### 回答1:
下面是一种可行的类的设计方式:
```
class Shape:
def __init__(self, width):
self.width = width
def get_area(self):
pass
class Rectangle(Shape):
def __init__(self, width, height):
super().__init__(width)
self.height = height
def get_area(self):
return self.width * self.height
def get_perimeter(self):
return 2 * (self.width + self.height)
class Circle(Shape):
def __init__(self, width):
super().__init__(width)
def get_area(self):
return 3.14 * (self.width / 2) ** 2
def get_perimeter(self):
return 2 * 3.14 * (self.width / 2)
```
这是一种基础的类设计方式。这些类中,`Shape` 是基础类,而 `Rectangle` 和 `Circle` 则是派生类。基础类中,包含了所有图形共有的属性,即宽度。同时,还有一个 `get_area()` 方法,它在基础类中是空的,在派生类中需要被重写。
而在派生类中,则有额外的属性,如 `Rectangle` 类中的高度,以及额外的方法,如 `Rectangle` 类中的 `get_perimeter()` 和 `Circle` 类中的 `get_perimeter()`。
接下来是一个测试主函数的例子:
```
def main():
r = Rectangle(4, 5)
print(f'矩形的面积为 {r.get_area()}')
print(f'矩形的周长为 {r.get_perimeter()}')
c = Circle(4)
print(f'圆的面积为 {c.get_area()}')
print(f'圆的周长为 {c.get_perimeter()}')
if __name__ == '__main__':
main()
```
运行后的输出应该如下
### 回答2:
首先,我们设计一个基类"图形"类shape,其中包含共同特征(如宽、高等)和方法(如初始化、求面积等)。
```python
class Shape:
def __init__(self, width=0, height=0):
self.width = width
self.height = height
def area(self):
pass
```
接下来,我们派生出矩形rectangle类和圆形circle类,并分别实现计算面积和周长的函数。
```python
import math
class Rectangle(Shape):
def __init__(self, width=0, height=0):
super().__init__(width, height)
def area(self):
return self.width * self.height
def perimeter(self):
return 2 * (self.width + self.height)
class Circle(Shape):
def __init__(self, radius=0):
super().__init__(radius)
def area(self):
return math.pi * self.width**2
def circumference(self):
return 2 * math.pi * self.width
```
最后,我们编写主函数进行测试。
```python
if __name__ == "__main__":
# 创建一个矩形对象,计算其面积和周长
rectangle = Rectangle(5, 4)
print("矩形的面积为:", rectangle.area())
print("矩形的周长为:", rectangle.perimeter())
# 创建一个圆形对象,计算其面积和周长
circle = Circle(3)
print("圆形的面积为:", circle.area())
print("圆形的周长为:", circle.circumference())
```
以上就是基于"图形"类shape派生出矩形rectangle和圆形circle的解决方案。在主函数中,我们创建了一个矩形对象和一个圆形对象,并分别计算它们的面积和周长,然后进行输出。
阅读全文