定义一个平面坐标点类Point,要求实现:数据成员,横纵坐标x, y定义成员函数:设置和返回横坐标setX, getX。 设置和返回纵坐标setY, getY。定义带默认形参值的构造函数定义拷贝构造函数定义成员函数showPoint()用于输出坐标。在main函数中应用并测试上述内容。在第4题的基础上,设计一个矩形类(Rectangle),要求实现:左下角的点left,右上角的点right(均为Point类型)构造函数进行初始化设置左下角的点left(要求可同时设置横坐标和纵坐标)设置右下角的点left(要求可同时设置横坐标和纵坐标)定义拷贝构造函数在main函数中应用并测试上述内容选做题在上述的矩形类(Rectangle)增加以下成员函数:计算矩形的周长计算矩形的面积判断一个点p在不在矩形的范围内在main函数中应用并测试上述内容
时间: 2023-06-02 10:03:49 浏览: 108
非常好的问题!以下是我的回答:
定义一个平面坐标点类Point,要求实现:
```python
class Point:
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def setX(self, x):
self.x = x
def setY(self, y):
self.y = y
def getX(self):
return self.x
def getY(self):
return self.y
def showPoint(self):
print('坐标点为:({0}, {1})'.format(self.x, self.y))
```
在main函数中进行测试:
```python
if __name__ == '__main__':
p = Point(3, 5)
p.showPoint() # 输出坐标点为:(3, 5)
p.setX(10)
p.setY(20)
print(p.getX(), p.getY()) # 输出10, 20
```
接下来是第二个问题:
在第4题的基础上,设计一个矩形类(Rectangle),要求实现:
```python
class Rectangle:
def __init__(self, left=Point(0, 0), right=Point(0, 0)):
self.left = left
self.right = right
def getLeft(self):
return self.left
def getRight(self):
return self.right
def setLeft(self, x, y):
self.left.setX(x)
self.left.setY(y)
def setRight(self, x, y):
self.right.setX(x)
self.right.setY(y)
def showRectangle(self):
print('左下角为:({0}, {1}),右上角为({2}, {3})'.format(self.left.getX(), self.left.getY(), self.right.getX(), self.right.getY()))
```
测试代码如下:
```python
if __name__ == '__main__':
r = Rectangle()
r.showRectangle() # 输出 左下角为:(0, 0),右上角为(0, 0)
p1 = Point(1, 2)
p2 = Point(3, 4)
r1 = Rectangle(p1, p2)
r1.showRectangle() # 输出 左下角为:(1, 2),右上角为(3, 4)
r1.setLeft(5, 6)
r1.setRight(7, 8)
r1.showRectangle() # 输出 左下角为:(5, 6),右上角为(7, 8)
```
如果要进行选做题的话,可以在矩形类中增加以下成员函数:
```python
def getPerimeter(self):
return 2 * (self.right.getX() - self.left.getX() + self.right.getY() - self.left.getY())
def getArea(self):
return (self.right.getX() - self.left.getX()) * (self.right.getY() - self.left.getY())
def isInside(self, point):
if point.getX() > self.left.getX() and point.getX() < self.right.getX() and point.getY() > self.left.getY() and point.getY() < self.right.getY():
return True
else:
return False
```
测试代码如下:
```python
if __name__ == '__main__':
p1 = Point(1, 2)
p2 = Point(3, 4)
r1 = Rectangle(p1, p2)
print('矩形的周长为:', r1.getPerimeter()) # 输出 矩形的周长为: 8
print('矩形的面积为:', r1.getArea()) # 输出 矩形的面积为: 4
p3 = Point(2, 3)
print('点(2, 3)是否在矩形中:', r1.isInside(p3)) # 输出 点(2, 3)是否在矩形中: True
p4 = Point(5, 6)
print('点(5, 6)是否在矩形中:', r1.isInside(p4)) # 输出 点(5, 6)是否在矩形中: False
```
我希望我的回答能够帮助到你!