import java.util.Arrays; import java.util.Scanner; public class CoordinatePolari2 implements Coordinate, Comparable{ public double rho; public double theta; public CoordinatePolari2(double rho, double theta){ this.rho = rho; this.theta = theta; } public double distOrigine() { return rho; } @Override public String toString() { return "<"+rho+", "+theta+">"; //return super.toString(); } /** * Confronta le informazioni rilevanti per l'oggetto di invocazione con * l'oggetto passato come parametro. * Ritorna true se tali informazioni sono uguali, false altrimenti * * @param obj l'oggetto con cui voglio verificare l'uguaglianza dell'oggetto di invocazione * @retrun true se obj e' di tipo CoordinatePolari e se le informazioni rilevanti per * obj e per l'oggetto di invocazione sono uguali. * */ public boolean equals(Object obj) { if (obj instanceof CoordinatePolari2) { CoordinatePolari2 cp = (CoordinatePolari2) obj; return ((rho == cp.rho) && (theta == cp.theta)); } return false; } /** * Confronta l'oggetto di invocazione con l'oggetto passato come parametro. * Ritorna un intero negativo/positivo/nullo se l'oggetto di invocazione e' * minore/maggiore/uguale di o *

* Un oggetto CoordinatePolari cp1 e': * minore di cp2 se cp1.distOrigine() < cp2.distOrigine() * maggiore di cp2 se cp1.distOrigine() > cp2.distOrigine() * uguale se cp1.distOrigine()==cp2.distOrigine(). * * @param o l'oggetto con cui voglio confrontare l'oggetto di invocazione * @retrun un intero negativo/positivo/nullo se l'oggetto di invocazione e' * minore/maggiore/uguale di o * */ public int compareTo(CoordinatePolari2 cp) { if (distOrigine() == cp.distOrigine()){ return 0; } return (distOrigine() > cp.distOrigine()?1:-1); //return (distOrigine()-cp.distOrigine()); } public static void main(String[] args) { final int n = 10; CoordinatePolari2 cp1 = new CoordinatePolari2(10.,0.); CoordinatePolari2 cp2 = new CoordinatePolari2(10.,0.); CoordinatePolari2 cp3 = new CoordinatePolari2(10.,30.); System.out.println(cp1 + " uguale " + cp2 + " : " + cp1.equals(cp2)); System.out.println(cp1 + " uguale " + cp3 + " : " + cp1.equals(cp3)); CoordinatePolari2[] v = new CoordinatePolari2[n]; for (int i = 0; i < v.length; i++) { v[i] = new CoordinatePolari2(Math.random(),Math.random()); } System.out.println("Vettore non ordinato "+Arrays.toString(v)); Sort.mergeSort(v); System.out.println("Vettore ordinato "+Arrays.toString(v)); } }