定义一个抽象类shape,应用抽象类shape派生圆类circle、圆内接正方形类innersquare和外切正方形类outersquare。求圆、圆内接正方形和外切正方形的面积和周长。
时间: 2023-06-05 22:48:08 浏览: 134
设计一个抽象类图形类,在该类中包含有至少两个抽象方法求周长和求面积,分别定义圆形类、长方形类、正方形类、三角形类来继承图形类,并实现上述两个方法
5星 · 资源好评率100%
抽象类shape定义如下:
```python
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass
@abstractmethod
def perimeter(self):
pass
```
圆类circle继承自抽象类shape,实现面积和周长的计算:
```python
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius ** 2
def perimeter(self):
return 2 * 3.14 * self.radius
```
圆内接正方形类innersquare和外切正方形类outersquare也继承自抽象类shape,实现面积和周长的计算:
```python
class InnerSquare(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return self.radius ** 2 * 2
def perimeter(self):
return self.radius * 8
class OuterSquare(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return self.radius ** 2 * 4
def perimeter(self):
return self.radius * 16
```
使用示例:
```python
circle = Circle(5)
print("圆的面积:", circle.area())
print("圆的周长:", circle.perimeter())
innersquare = InnerSquare(5)
print("圆内接正方形的面积:", innersquare.area())
print("圆内接正方形的周长:", innersquare.perimeter())
outersquare = OuterSquare(5)
print("圆外切正方形的面积:", outersquare.area())
print("圆外切正方形的周长:", outersquare.perimeter())
```
输出结果:
```
圆的面积: 78.5
圆的周长: 31.400000000000002
圆内接正方形的面积: 50
圆内接正方形的周长: 20
圆外切正方形的面积: 100
圆外切正方形的周长: 40
```
阅读全文