Das Interface “Comparable” Eine Klasse, die das Interface Comparable implementiert, bringt ihre Objekte in eine KleinerGrößer-Ordnung. Es verfügt über nur eine Methode, nämlich compareTo(): public interface Comparable { public int compareTo(Object o) } Ein Interface zu implementieren bedeutet, alle seine Methoden zu implementieren. Das Interface Comparable zu implementieren heißt also, eine compareTo()-Methode mit der oben genannten Signatur zu erstellen. Regeln für compareTo() Wenn a.compareTo(b) < 0 ergibt, dann gilt a < b. Wenn a.compareTo(b) > 0 ergibt, dann gilt a > b. Wenn a.compareTo(b) == 0 ergibt, dann sollte a.equals(b) gelten. Die von euch eingeführte Ordnung muss „in einer Linie“ sein, das heißt: x.compareTo(y) > 0 && y.compareTo(z) > 0 => x.compareTo(z) > 0. Welche negative Zahl bzw. welche positive Zahl ihr bei eurer Implementierung von compareTo() zurückgebt, ist beliebig. Weil die Signatur von compareTo() ein Object als Parameter erwartet, wird bei der Implementierung zunächst ein Casting zu der von euch implementierten Klasse erforderlich sein. Automatisches Sortieren von Arrays Arrays von Klassen, die das Comparable-Interface implementieren, können mit der sortMethode der Klasse Arrays automatisch sortiert werden: public class Arrays { public static void sort(Object[] a) } Beispiel: Römische Zahlen Die Klasse RoemischeZahl ist wie folgt modelliert und implementiert worden: public class RoemischeZahl { //Eigenschaften private int zahl; private String roemischeZahl; //Konstruktoren public RoemischeZahl(int i) //Methoden public void add(int i) public void add(RoemischeZahl r) public int intValue() public String stringValue() } Aufgabe: 1) Führe alle notwendigen Ergänzungen durch, damit die Klasse RoemischeZahl das Interface Comparable implementiert. 2) Implementiere die compareTo()-Methode. 3) Erzeuge ein Array von Römischen Zahlen und sortiere es mit der Arrays.sort()Methode. Zusatzaufgabe: 4) Implementiere die Klasse RoemischeZahl vollständig.