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

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!