Question

In: Computer Science

For these exercises you are required to edit in the Comparable interface implementation, a compareTo() method,...

For these exercises you are required to edit in the Comparable interface implementation, a compareTo() method, starting with the class definition you obtained from the link, and submit that with a client that uses this ordering. If you are so inclined, you may submit a single client to drive your ordering enhancements for both classes, rather than one for each class.

The exercises, for those without the text:

19. Modify the Point class from Chapter 8 so that it defines a natural ordering by implementing the Comparable interface. Compare the Points by y-major order; that is, points with smaller y-coordinate values should come before those with higher y-coordinate values. Break ties by comparing x-coordinate values.

Please include comments, show the output, and put the text code( not just the screenshot of the code)

here are the class to use(Please use them):

1. Point.java

/* * Your file header comment block goes above this line *

* 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);

}

}

2. PointMainMin.java

/*

* Your file header comment block goes above this line

*

* 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\n", p1.distanceFromOrigin());

System.out.println("p2 is " + p2);

System.out.printf("distance from origin = %3.2f\n", p2.distanceFromOrigin());

}

}

Solutions

Expert Solution

The interface is present in java.lang package and contains only one method called compareTo(object). It allows only a single sorting order. That is we can only sort the elements of a class on the basis of a single class  member only.

(In this case its the value of y)

CompareTo method returns 1 if the current object is greater than the specified object.

Returns 0 if current object is equal to specified object.

Returns -1 if current object is less than the specified object.

On implementing the comparable interface, the point class definition looks like:

import java.util.*;
import java.lang.*;


public class point implements Comparable<point>{
   private int x;
   private int y;

   public point(int x, int y){
       if(x<0||y<0){
           throw new IllegalArgumentException();
       }
       this.x = x;
       this.y = y;
    }
    public point(){
        this(0,0);
    }
    public int getX(){
        return this.x;
    }
    public int getY(){
        return this.y;
    }

    // Main change made to the class definition //
    @Override
    public int compareTo(point p){
        /* returns 1 if this.getY() > p.getY()
          returns 0 if this.getY == p.getY()
          returns -1 if this.getY < p.getY() */
        if(this.getY() == p.getY()){
            return 0;
        }
        else if(this.getY() > p.getY()){
            return 1;
        }
        else{
            return -1;
        }
    }

    // compareTo ends here
    /* Remaining methods of point class*/
    public double distancefromOrigin(){
        return Math.sqrt(x*x + y*y);
    }

    public String toString(){
        return "(" + this.x + "," + this.y +")"; 
    }

    public boolean equals(Object o){
        if( o instanceof point){
            point other = (Point) o;
            return this.x == other.getX() &&
            this.y == other.getY();
        }else{
            return false;
        }
    }

    public Point translate( int dx, int dy){
        return new point(this.x +dx,this.y + dy);
    }
   }

Related Solutions

For these exercises you are required to edit in the Comparable interface implementation, a compareTo() method,...
For these exercises you are required to edit in the Comparable interface implementation, a compareTo() method, starting with the class definition you obtained from the link, and submit that with a client that uses this ordering. If you are so inclined, you may submit a single client to drive your ordering enhancements for both classes, rather than one for each class. The exercises, for those without the text: 19. Modify the Point class from Chapter 8 so that it defines...
Using the Comparable Interface Write a class Compare3 that provides a static method largest. Method largest...
Using the Comparable Interface Write a class Compare3 that provides a static method largest. Method largest should take three Comparable parameters and return the largest of the three (so its return type will also be Comparable). Recall that method compareTo is part of the Comparable interface, so largest can use the compareTo method of its parameters to compare them. Write a class Comparisons whose main method tests your largest method above. First prompt the user for and read in three...
data structure class: a. syntax for generics b. comparable interface c.how do you implement interface answer...
data structure class: a. syntax for generics b. comparable interface c.how do you implement interface answer for all of them please. answer for all of them please
This activity will require you to apply your knowledge of interfaces – including the Comparable interface...
This activity will require you to apply your knowledge of interfaces – including the Comparable interface – in order to leverage the capabilities of the ArrayList data structure. --------- You may work individually or with a partner, but be sure that each student submits their own assignment in Canvas (and leave a comment with your partner's name if you worked with one). --------- Description: Interfaces are used to make a Class implement a behavior or set of behaviors. Recall the...
3.2. Unfortunately, you cannot modify the Rectangle class so that it implements the Comparable interface. The...
3.2. Unfortunately, you cannot modify the Rectangle class so that it implements the Comparable interface. The Rectangle class is part of the standard library, and you cannot modify library classes. Fortunately, there is a second sort method that you can use to sort a list of objects of any class, even if the class doesn't implement the Comparable interface. Comparator<T> comp = . . .; // for example, Comparator<Rectangle> comp = new RectangleComparator(); Collections.sort(list, comp); Comparator is an interface. Therefore,...
In this class add Comparable interface. In the driver program create a few objects and In...
In this class add Comparable interface. In the driver program create a few objects and In the driver program create a few objects and compare them . then create a list of those objects and sort them .A Quadratic is bigger than another Quadratic if it opens faster package pack2; /** * This is a program for defining a quadratic equation * @author sonik */ public class Quadratic { public int coeffX2 = 0; public int coeffX = 0; public...
In Java: Job class The Job implements the Comparable interface A Job object is instantiated with...
In Java: Job class The Job implements the Comparable interface A Job object is instantiated with three int variables, indicating the arrivalTime, the timeForTheJob, and the priority. When the Job is created it is given the next sequential ID starting from 1. (You should use a static variable to keep track of where you are in ID assignment.) There are also int variables for startTime, waitTime (in queue) and endTime for the Job. The following methods are required: getID, set...
In Java: Job class The Job implements the Comparable interface A Job object is instantiated with...
In Java: Job class The Job implements the Comparable interface A Job object is instantiated with three int variables, indicating the arrivalTime, the timeForTheJob, and the priority. When the Job is created it is given the next sequential ID starting from 1. (You should use a static variable to keep track of where you are in ID assignment.) There are also int variables for startTime, waitTime (in queue) and endTime for the Job. The following methods are required: getID, set...
4) Define an abstract class Name Java class that implements interface Comparable   
4) Define an abstract class Name Java class that implements interface Comparable   
(Java 8th Person edition) Exercise 13.9, p. 536 (Enable Circle comparable). Override the following methods: compareTo...
(Java 8th Person edition) Exercise 13.9, p. 536 (Enable Circle comparable). Override the following methods: compareTo (interface Comparable), toString (class GeometricObject) and equals (class Object).Create an array of comparable circles, sort them and display the result of a sorting procedure. Then create one more circle, which is equal to one of the existing circles and demonstrate the work of the method equals(). I added the code that the question references, but I'm not even quite too sure what it's asking...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT