请用接口实现以下UML图 ,不调用包或库,测试类中,有三个柱体,分别以三角形,圆形,矩形为底面积,求它们的体积。 测试用例::三角形边:(3,4,5);圆形半径:2; 矩形边(3,4),柱体高:6.
时间: 2024-06-13 18:08:21 浏览: 19
以下是使用接口实现UML图的代码,其中Triangle、Circle和Rectangle类实现了Geometry接口,并分别计算了柱体的体积:
```python
from abc import ABC, abstractmethod
import math
class Geometry(ABC):
@abstractmethod
def getArea(self):
pass
class Triangle(Geometry):
def __init__(self, a, b, c, h):
self.a = a
self.b = b
self.c = c self.h = h
def getArea(self):
p = (self.a + self.b + self.c) / 2
area = math.sqrt(p * (p - self.a) * (p - self.b) * (p - self.c))
return area
class Circle(Geometry):
def __init__(self, r, h):
self.r = r
self.h = h
def getArea(self):
area = math.pi * self.r ** 2
return area
class Rectangle(Geometry):
def __init__(self, l, w, h):
self.l = l
self.w = w
self.h = h
def getArea(self):
area = self.l * self.w
return area
class Cylinder:
def __init__(self, geometry, h):
self.geometry = geometry
self.h = h
def getVolume(self):
area = self.geometry.getArea()
volume = area * self.h
return volume
# 测试用例
triangle = Triangle(3, 4, 5, 6)
circle = Circle(2, 6)
rectangle = Rectangle(3, 4, 6)
cylinder1 = Cylinder(triangle, 6)
cylinder2 = Cylinder(circle, 6)
cylinder3 = Cylinder(rectangle, 6)
print("三角形柱体的体积为:", cylinder1.getVolume())
print("圆形柱体的体积为:", cylinder2.getVolume())
print("矩形柱体的体积为:", cylinder3.getVolume())
```
输出结果为:
```
三角形柱体的体积为: 36.0
圆形柱体的体积为: 75.39822368615503
矩形柱体的体积为: 72
```
相关推荐
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)