Question
QUESTION: Modify the Point class from Chapter 8 so that it defines a natural ordering by implementing the Comparable interface. Compare the Points by yy-major
QUESTION:
Modify the Point class from Chapter 8 so that it defines a natural ordering by implementing the Comparable interface. Compare the Points by yy-major order; that is, points with smaller yy-coordinate values should come before those with higher yy-coordinate values. Break ties by comparing xx-coordinate values.
GIVEN JAVA FILE
// A Point object represents a pair of (x, y) coordinates. // Class invariant: x >= 0 && y >= 0. (Quadrant I only)
public class Point { private int x; private int y;
// Constructs a new point at the given (x, y) location. // pre: x >= 0 && y >= 0 public Point(int x, int y) { if (x < 0 || y < 0) { throw new IllegalArgumentException(); } this.x = x; this.y = y; }
// Constructs a new point at the origin, (0, 0). public Point() { this(0, 0); // calls Point(int, int) constructor }
// Returns the distance between this Point and (0, 0). public double distanceFromOrigin() { return Math.sqrt(x * x + y * y); }
// Returns whether o refers to a point with the same (x, y) // coordinates as this point. Robust version. public boolean equals(Object o) { if (o instanceof Point) { Point other = (Point) o; return this.x == other.getX() && this.y == other.getY(); } else { // not a Point object return false; } }
// Returns the x-coordinate of this point. public int getX() { return this.x; }
// Returns the y-coordinate of this point. public int getY() { return this.y; }
// Returns a String representation of this point. public String toString() { return "(" + this.x + ", " + this.y + ")"; }
// Returns a new point, shifted from this one by dx and dy. // pre: x + dx >= 0 && y + dy >= 0 public Point translate(int dx, int dy) { return new Point(this.x + dx, this.y + dy); } }
GIVEN PointMainMin FILE
// A client program that deals with simple points. // Minimal version, to accompany immutable Point class.
public class PointMainMin { public static void main(String[] args) { // create two Point objects Point p1 = new Point(7, 2); Point p2 = new Point(4, 3); // print each point and its distance from the origin System.out.println("p1 is " + p1); System.out.printf("distance from origin = %3.2f ", p1.distanceFromOrigin()); System.out.println("p2 is " + p2); System.out.printf("distance from origin = %3.2f ", p2.distanceFromOrigin()); } }
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started