python3

(二)、以圆类为基础设计三维图形体系

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

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

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

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

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

程序中定义各种类的对象,并完成测试。

【源代码程序】

from math import pi

# 三维图形功能接口
class IThreeDimensionalShape:
    def calculate_perimeter(self):
        pass

    def calculate_area(self):
        pass

    def calculate_volume(self):
        pass

# 点类
class Point:
    def __init__(self, x=0, y=0):
        self.x = x
        self.y = y

    def set_coordinates(self, x, y):
        self.x = x
        self.y = y

    def get_coordinates(self):
        return self.x, self.y

    def display(self):
        print("Point: ({}, {})".format(self.x, self.y))

# 圆类
class Circle(Point, IThreeDimensionalShape):
    def __init__(self, x=0, y=0, radius=0):
        super().__init__(x, y)
        self.radius = radius

    def calculate_perimeter(self):
        return 2 * pi * self.radius

    def calculate_area(self):
        return pi * self.radius**2

    def display(self):
        print("Circle - Radius: {}".format(self.radius))
        super().display()

# 球类
class Sphere(Circle):
    def display(self):
        print("Sphere - Radius: {}".format(self.radius))
        super().display()

# 圆柱类
class Cylinder(Circle):
    def __init__(self, x=0, y=0, radius=0, height=0):
        super().__init__(x, y, radius)
        self.height = height

    def calculate_volume(self):
        return self.calculate_area() * self.height

    def display(self):
        print("Cylinder - Radius: {}, Height: {}".format(self.radius, self.height))
        super().display()

# 圆锥类
class Cone(Circle):
    def __init__(self, x=0, y=0, radius=0, height=0):
        super().__init__(x, y, radius)
        self.height = height

    def calculate_volume(self):
        return (1/3) * self.calculate_area() * self.height

    def display(self):
        print("Cone - Radius: {}, Height: {}".format(self.radius, self.height))
        super().display()

# 测试类的对象
if __name__ == "__main__":
    p = Point(1.0, 2.0)
    c = Circle(3.0, 4.0, 5.0)
    s = Sphere(6.0, 7.0, 8.0)
    cy = Cylinder(9.0, 10.0, 11.0, 12.0)
    co = Cone(13.0, 14.0, 15.0, 16.0)

    p.display()
    c.display()
    s.display()
    cy.display()
    co.display()

    print("Circle Perimeter:", c.calculate_perimeter())
    print("Circle Area:", c.calculate_area())
    print("Cylinder Volume:", cy.calculate_volume())
    print("Cone Volume:", co.calculate_volume())
posted @ 2024-06-07 16:15  vvvcutee  阅读(3)  评论(0编辑  收藏  举报