9设计并实现一个矩形类Rectangle,要求: (1)用左上角和右下角的坐标描述矩形(可以使用第5题定义的 Point类): (2)计算面积、周长; (3)移动矩形; (4)合理的初始化,默认宽和高都是1。 编写测试程序。
时间: 2024-03-10 08:46:02 浏览: 82
好的,我理解了你的要求。下面是实现矩形类Rectangle的代码:
```python
class Point:
def __init__(self, x=0, y=0):
self.x = x
self.y = y
class Rectangle:
def __init__(self, point1=Point(), point2=Point(1, 1)):
self.left_top = Point(min(point1.x, point2.x), max(point1.y, point2.y))
self.right_bottom = Point(max(point1.x, point2.x), min(point1.y, point2.y))
def get_width(self):
return self.right_bottom.x - self.left_top.x
def get_height(self):
return self.left_top.y - self.right_bottom.y
def get_area(self):
return self.get_width() * self.get_height()
def get_perimeter(self):
return 2 * (self.get_width() + self.get_height())
def move(self, dx, dy):
self.left_top.x += dx
self.left_top.y += dy
self.right_bottom.x += dx
self.right_bottom.y += dy
# 测试程序
p1 = Point(0, 0)
p2 = Point(2, 4)
rect = Rectangle(p1, p2)
print("矩形的面积为:", rect.get_area())
print("矩形的周长为:", rect.get_perimeter())
print("移动前矩形的左上角坐标为:", rect.left_top.x, rect.left_top.y)
rect.move(1, -1)
print("移动后矩形的左上角坐标为:", rect.left_top.x, rect.left_top.y)
```
运行上述代码,得到如下输出:
```
矩形的面积为: 8
矩形的周长为: 12
移动前矩形的左上角坐标为: 0 4
移动后矩形的左上角坐标为: 1 3
```
以上就是实现矩形类Rectangle的完整代码和测试程序,希望你对这份代码满意。
阅读全文