这是一个设计一个圆类circle,具有属性:圆心坐标x和y及圆半径r,除具有设置及获取属性的方法外,还具有计算周长的方法perimeter()和计算面积的方法area()。然后设计一个圆柱体类cylinder,它具有一个圆柱体类的属性底圆及高度h,除具有设置及获取属性的方法外,还可以计算圆柱体的表面积和体积。
时间: 2023-07-16 07:17:02 浏览: 102
在 3D 中绘制一个圆:该函数绘制一个具有用户定义的半径、位置和方向的圆-matlab开发
好的,以下是 Python 实现:
```python
import math
class Circle:
def __init__(self, x=0, y=0, r=0):
self.x = x
self.y = y
self.r = r
def set_x(self, x):
self.x = x
def set_y(self, y):
self.y = y
def set_r(self, r):
self.r = r
def get_x(self):
return self.x
def get_y(self):
return self.y
def get_r(self):
return self.r
def perimeter(self):
return 2 * math.pi * self.r
def area(self):
return math.pi * self.r ** 2
class Cylinder:
def __init__(self, circle=Circle(), h=0):
self.circle = circle
self.h = h
def set_circle(self, circle):
self.circle = circle
def set_h(self, h):
self.h = h
def get_circle(self):
return self.circle
def get_h(self):
return self.h
def surface_area(self):
return 2 * self.circle.area() + self.circle.perimeter() * self.h
def volume(self):
return self.circle.area() * self.h
```
上述代码定义了两个类,分别为 Circle 和 Cylinder。其中 Circle 类具有三个属性:圆心坐标 x 和 y,以及半径 r,以及三个方法:设置属性值(set_x, set_y, set_r),获取属性值(get_x, get_y, get_r),计算周长(perimeter)和计算面积(area)。Cylinder 类有两个属性:底部的 Circle 类型的圆和高度 h,以及两个方法:设置属性值(set_circle, set_h),获取属性值(get_circle, get_h),计算表面积(surface_area)和计算体积(volume)。
继承的实现方式:
```python
import math
class Circle:
def __init__(self, x=0, y=0, r=0):
self.x = x
self.y = y
self.r = r
def set_x(self, x):
self.x = x
def set_y(self, y):
self.y = y
def set_r(self, r):
self.r = r
def get_x(self):
return self.x
def get_y(self):
return self.y
def get_r(self):
return self.r
def perimeter(self):
return 2 * math.pi * self.r
def area(self):
return math.pi * self.r ** 2
class Cylinder(Circle):
def __init__(self, x=0, y=0, r=0, h=0):
super().__init__(x, y, r)
self.h = h
def set_h(self, h):
self.h = h
def get_h(self):
return self.h
def surface_area(self):
return 2 * super().area() + super().perimeter() * self.h
def volume(self):
return super().area() * self.h
```
上述代码中,Cylinder 类继承了 Circle 类,因此所有 Circle 类的属性和方法均可在 Cylinder 类中使用。Cylinder 类新增了一个属性 h,以及两个方法:设置属性值(set_h),获取属性值(get_h),计算表面积(surface_area)和计算体积(volume)。在 Cylinder 类中,使用 super() 函数调用 Circle 类的 __init__ 方法初始化 Circle 类的属性。
阅读全文