2024/5/16

进行python实验:设计三维图形类体系,要求如下:

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

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

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

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

class ThreeDimensionalShape(ABC):
    @abstractmethod
    def calculate_perimeter(self):
        pass

    @abstractmethod
    def calculate_area(self):
        pass

    @abstractmethod
    def calculate_volume(self):
        pass

class Point:
    def __init__(self, x, y):
        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"点坐标: ({self.x:.1f}, {self.y:.1f})")

class Circle(Point):
    def __init__(self, x, y, radius):
        super().__init__(x, y)
        self.radius = radius

    def calculate_perimeter(self):
        return round(2 * math.pi * self.radius, 1)

    def calculate_area(self):
        return round(math.pi * self.radius ** 2, 1)

    def display(self):
        super().display()
        print(f"圆半径: {self.radius:.1f}")
        print(f"圆周长: {self.calculate_perimeter()}")
        print(f"圆面积: {self.calculate_area()}")

class Sphere(Circle):
    def calculate_volume(self):
        return round((4/3) * math.pi * self.radius ** 3, 1)

    def display(self):
        super().display()
        print(f"球体积: {self.calculate_volume()}")

class Cylinder(Circle):
    def __init__(self, x, y, radius, height):
        super().__init__(x, y, radius)
        self.height = height

    def calculate_volume(self):
        return round(math.pi * self.radius ** 2 * self.height, 1)

    def calculate_area(self):
        return round(2 * math.pi * self.radius * (self.radius + self.height), 1)

    def display(self):
        super().display()
        print(f"圆柱高度: {self.height:.1f}")
        print(f"圆柱体积: {self.calculate_volume()}")
        print(f"圆柱表面积: {self.calculate_area()}")

class Cone(Cylinder):
    def calculate_volume(self):
        return round((1/3) * math.pi * self.radius ** 2 * self.height, 1)

    def display(self):
        super().display()
        print(f"圆锥体体积: {self.calculate_volume()}")


point1 = Point(1, 2)
point1.display()

circle1 = Circle(3, 4, 5)
circle1.display()

sphere1 = Sphere(0, 0, 6)
sphere1.display()

cylinder1 = Cylinder(2, 3, 4, 5)
cylinder1.display()

cone1 = Cone(1, 1, 3, 4)
cone1.display()

 

posted @ 2024-05-16 21:04  The-rich  阅读(20)  评论(0)    收藏  举报