(1)定义一个类location,用数据成员x、y表示该类对象在二维坐标系中的坐标位置,用成员函数move改变对象坐标位置,成员函数draw显示坐标值。 (2)以类location为基类,派生出点类point,重载成员函数move改变对象坐标位置,成员函数draw显示坐标点到原点的位移。 (3)再利用点类point派生出圆类circle,用数据成员r表示圆的半径,成员函数move改变对象半径和坐标,成员函数draw显示圆的面积。 在主函数中定义各类的对象并调用成员函数以测试功能。
时间: 2024-03-23 17:35:58 浏览: 39
以下是代码实现:
```python
import math
# 定义location类
class location:
def __init__(self, x, y):
self.x = x
self.y = y
def move(self, dx, dy):
self.x += dx
self.y += dy
def draw(self):
print("x坐标:", self.x)
print("y坐标:", self.y)
# 定义point类,继承location类
class point(location):
def __init__(self, x, y):
super().__init__(x, y)
def move(self, dx, dy):
super().move(dx, dy)
def draw(self):
d = math.sqrt(self.x ** 2 + self.y ** 2)
print("距离原点的位移:", d)
# 定义circle类,继承point类
class circle(point):
def __init__(self, x, y, r):
super().__init__(x, y)
self.r = r
def move(self, dx, dy, dr):
super().move(dx, dy)
self.r += dr
def draw(self):
area = math.pi * self.r ** 2
print("圆的面积:", area)
# 测试代码
l = location(1, 2)
l.draw()
l.move(3, -1)
l.draw()
p = point(1, 2)
p.draw()
p.move(3, -1)
p.draw()
c = circle(1, 2, 3)
c.draw()
c.move(3, -1, 1)
c.draw()
```
输出结果:
```
x坐标: 1
y坐标: 2
x坐标: 4
y坐标: 1
距离原点的位移: 2.23606797749979
距离原点的位移: 4.242640687119285
圆的面积: 28.274333882308138
圆的面积: 50.26548245743669
```
阅读全文