2024/5/16
进行python实验:设计三维图形类体系,要求如下:
设计三维图形功能接口,接口包含周长、面积、体积计算方法;
基于以上接口,首先定义点类,应包含x,y坐标数据成员,坐标获取及设置方法、显示方法等;
以点类为基类派生圆类,增加表示半径的数据成员,半径获取及设置方法,重载显示函数,并可计算周长和面积等;
以圆类为基础派生球类、圆柱类、圆锥类;要求派生类球、圆柱、圆锥中都含有输入和输出显示方法;并可计算面积、周长。
设计三维图形功能接口,接口包含周长、面积、体积计算方法;
基于以上接口,首先定义点类,应包含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()
浙公网安备 33010602011771号