2024.5.21

8-2 【Python0015】以圆类为基础设计三维图形体系
分数 10
作者 doublebest
单位 石家庄铁道大学

【题目描述】设计三维图形类体系,要求如下:

设计三维图形功能接口,接口包含周长、面积、体积计算方法;

基于以上接口,首先定义点类,应包含x,y坐标数据成员,坐标获取及设置方法、显示方法等;

以点类为基类派生圆类,增加表示半径的数据成员,半径获取及设置方法,重载显示函数,并可计算周长和面积等;

以圆类为基础派生球类、圆柱类、圆锥类;要求派生类球、圆柱、圆锥中都含有输入和输出显示方法;并可计算面积、周长。

程序中定义各种类的对象,并完成测试。
【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。

 

import math

# 定义三维图形接口

class ThreeDimensionalShape:

def perimeter(self):

pass

def area(self):

pass

def volume(self):

pass

# 定义点类

class Point:

def __init__(self, x=0, y=0):

self.x = x

self.y = y

def get_coordinates(self):

return self.x, self.y

def set_coordinates(self, x, y):

self.x = x

self.y = y

def display(self):

print(f"Point coordinates: ({self.x}, {self.y})")

# 定义圆类

class Circle(Point, ThreeDimensionalShape):

def __init__(self, x=0, y=0, radius=0):

super().__init__(x, y)

self.radius = radius

def set_radius(self, radius):

self.radius = radius

def perimeter(self):

return 2 * math.pi * self.radius

def area(self):

return math.pi * self.radius ** 2

def display(self):

super().display()

print(f"Circle radius: {self.radius}")

print(f"Circle perimeter: {self.perimeter()}")

print(f"Circle area: {self.area()}")

# 定义球类

class Sphere(Circle):

def __init__(self, x=0, y=0, radius=0):

super().__init__(x, y, radius)

def volume(self):

return (4 / 3) * math.pi * self.radius ** 3

def display(self):

super().display()

print(f"Sphere volume: {self.volume()}")

# 定义圆柱类

class Cylinder(Circle):

def __init__(self, x=0, y=0, radius=0, height=0):

super().__init__(x, y, radius)

self.height = height

def volume(self):

return math.pi * self.radius ** 2 * self.height

def display(self):

super().display()

print(f"Cylinder height: {self.height}")

print(f"Cylinder volume: {self.volume()}")

# 定义圆锥类

class Cone(Circle):

def __init__(self, x=0, y=0, radius=0, height=0):

super().__init__(x, y, radius)

self.height = height

def volume(self):

return (1 / 3) * math.pi * self.radius ** 2 * self.height

def display(self):

super().display()

print(f"Cone height: {self.height}")

print(f"Cone volume: {self.volume()}")

# 测试

if __name__ == "__main__":

point = Point(1, 2)

point.display()

circle = Circle(3, 4, 5)

circle.display()

sphere = Sphere(6, 7, 8)

sphere.display()

cylinder = Cylinder(9, 10, 11, 12)

cylinder.display()

cone = Cone(13, 14, 15, 16)

cone.display()


image.png

posted @ 2024-06-13 15:43  liuxuechao  阅读(1)  评论(0编辑  收藏  举报