定义一个点,包含x,y坐标。包含无参构造函数和有参构造函数。 定义一条边,拥有起点、终点,拥有长度属性(长度可计算)。 定义一个长方形,由四条边(或四个顶点)组成,拥有面积、周长属性(可计算)。判断其有效性。 分别测试点对象、边对象和长方形对象。
时间: 2024-09-28 18:09:33 浏览: 24
在程序设计中,我们可以这样定义这些基本结构:
```java
// 点类 Point
class Point {
private double x;
private double y;
// 无参构造函数
public Point() {
this.x = 0.0;
this.y = 0.0;
}
// 有参构造函数
public Point(double xCoord, double yCoord) {
this.x = xCoord;
this.y = yCoord;
}
// 访问器方法
public double getX() { return x; }
public double getY() { return y; }
}
// 边类 Edge
class Edge {
private Point start;
private Point end;
private double length;
// 无参构造函数
public Edge() {}
// 有参构造函数
public Edge(Point startPoint, Point endPoint) {
this.start = startPoint;
this.end = endPoint;
this.length = calculateLength(startPoint, endPoint);
}
// 长度计算方法
private double calculateLength(Point a, Point b) {
return Math.sqrt(Math.pow(b.getX() - a.getX(), 2) + Math.pow(b.getY() - a.getY(), 2));
}
// 获取方法
public Point getStart() { return start; }
public Point getEnd() { return end; }
public double getLength() { return length; }
}
// 长方形类 Rectangle
class Rectangle {
private Edge leftEdge;
private Edge rightEdge;
private Edge topEdge;
private Edge bottomEdge;
private double width;
private double height;
// 构造函数
public Rectangle(Edge left, Edge right, Edge top, Edge bottom) {
if (left.getEnd().equals(right.getStart()) && top.getEnd().equals(bottom.getStart())) {
this.leftEdge = left;
this.rightEdge = right;
this.topEdge = top;
this.bottomEdge = bottom;
this.width = rightEdge.getLength();
this.height = topEdge.getLength();
} else {
throw new IllegalArgumentException("Invalid rectangle: edges do not form a rectangle.");
}
}
// 区域和周长计算方法
private double calculateArea() { return width * height; }
private double calculatePerimeter() { return 2 * (width + height); }
// 获取方法
public double getArea() { return calculateArea(); }
public double getPerimeter() { return calculatePerimeter(); }
// 判断有效性
public boolean isValid() {
return leftEdge.getEnd().equals(rightEdge.getStart()) && topEdge.getEnd().equals(bottomEdge.getStart());
}
}
// 测试示例
public class Main {
public static void main(String[] args) {
Point p1 = new Point(1, 2);
Point p2 = new Point(4, 5);
Edge e = new Edge(p1, p2);
System.out.println("Edge length: " + e.getLength());
Rectangle r = new Rectangle(e, e, e, e);
System.out.println("Rectangle area: " + r.getArea());
System.out.println("Is the rectangle valid? " + r.isValid());
}
}
```