计算球体、圆柱体的表面积 分数 10 作者 董卫萍 单位 绍兴文理学院元培学院 从球体、圆柱体抽象出一个公共基类Container,类Container内定义两个类变量pi圆周率,total_area总表面积、两个未实现的方法。模拟实现一个容器类层次结构,子类要求实现父类的所有方法,并在主方法进行多态测试。 设计一个类Container,有以下类变量、方法: PI=3.1415926 类变量 total_area=0 类变量 area(): 未实现 str():未实现 设计一个子类Sphere,继承Container类,实现以下方法: init():构造方法,参数:半径 area():返回球体表面积 str():返回球体名称、球体表面积的描述 设计一个子类Cylinder,继承Container类,实现以下方法: init():构造方法,参数:半径、高 area():返回圆柱体表面积 str():返回圆柱体名称、圆柱体表面积的描述 裁判测试程序样例: /*请在这里填写答案 */ def main(): r=float(input()) sp = Sphere(r) r,h=map(float,input().split()) cy = Cylinder(r,h) print(sp) print(cy) print('Total area = %.2f'%Container.total_area) main() 输入样例: 在这里给出一组输入。例如: 2.56 3.45 15.7 输出样例: 在这里给出相应的输出。例如: Sphere: area = 82.35 Cylinder: area = 415.11
时间: 2024-02-22 18:55:54 浏览: 97
这道题目是一个面向对象的编程题,需要设计一个类层次结构来模拟球体和圆柱体的表面积计算。以下是一个Python的参考实现:
```python
class Container:
PI = 3.1415926
total_area = 0
@staticmethod
def area():
raise NotImplementedError
def __str__(self):
raise NotImplementedError
class Sphere(Container):
def __init__(self, r):
self.r = r
def area(self):
return 4 * self.PI * self.r ** 2
def __str__(self):
return f"Sphere: area = {self.area():.2f}"
class Cylinder(Container):
def __init__(self, r, h):
self.r = r
self.h = h
def area(self):
return 2 * self.PI * self.r * (self.r + self.h)
def __str__(self):
return f"Cylinder: area = {self.area():.2f}"
def main():
r = float(input())
sp = Sphere(r)
r, h = map(float, input().split())
cy = Cylinder(r, h)
print(sp)
print(cy)
print(f"Total area = {Container.total_area:.2f}")
main()
```
在这个实现中,我们定义了一个基类 `Container`,其中包含了两个类变量 `PI` 和 `total_area`,以及两个未实现的方法 `area()` 和 `__str__()`。这个基类被两个子类 `Sphere` 和 `Cylinder` 继承,分别实现了自己的构造方法、表面积计算方法和描述方法。
在 `main()` 函数中,我们首先读入一个半径,创建一个球体对象 `sp`,然后读入一个半径和高度,创建一个圆柱体对象 `cy`。最后输出这两个对象的描述以及总表面积。
阅读全文