Schreiben Sie eine Klasse Quadrat, welche ein Attribut seitenlaenge besitzt, das nur für abgeleitete Klassen sichtbar ist. Objekte der Klasse Quadrat sollen im nachfolgenden Programm verwendet werden können. Hierzu muß Quadrat also die Interfaces Comparable und Cloneable geeignet implementieren.
Alles anzeigen
Quellcode
- package Quadrat;
- import java.util.Arrays;
- /**
- * @author Torben Brodt
- * <p />Quadrat: Übung um den Umgang mit Interfaces, Comparable und Cloneable zu erlernen
- * <p />Funktioniert ab Java 1.5
- */
- public class QuadratApp {
- public static void main(String[] args) {
- Quadrat q1 = new Quadrat(47);
- Quadrat q2 = new Quadrat(11);
- Quadrat q3 = (Quadrat) q2.clone();
- System.out.println("Clonen: ");
- if (q3.equals(q2)) {
- System.out.println("Die Quadrate q2 und q3 sind gleich.");
- } else {
- System.out.println("Die Quadrate q2 und q3 sind ungleich.");
- }
- if (q3 == q2) {
- System.out.println("Die Quadrate q2 und q3 sind identisch.");
- } else {
- System.out.println("Die Quadrate q2 und q3 sind nicht identisch.");
- }
- System.out.println("Sortieren: ");
- q3.setzeSeitenlaenge(15);
- Quadrat[] quadArray = { q1, q2, q3 };
- Arrays.sort(quadArray);
- for (int i = 0; i < quadArray.length; ++i)
- System.out.println(i + 1 + ". " + quadArray[i]);
- }
- }
- class Quadrat implements Comparable, Cloneable {
- protected int seitenlaenge=0;
- /**
- * Konstruktor
- */
- public Quadrat(int seitenlaenge) {
- setzeSeitenlaenge(seitenlaenge);
- }
- /**
- * setzt die geschuetzte Variable
- */
- public void setzeSeitenlaenge(int seitenlaenge) {
- this.seitenlaenge=seitenlaenge;
- }
- /**
- * Vergleicht den Inhalt
- */
- public boolean equals(Quadrat quadrat) {
- return (quadrat.seitenlaenge == this.seitenlaenge);
- }
- /**
- * Klont den Inhalt
- */
- public Object clone() {
- return new Quadrat(this.seitenlaenge);
- }
- /**
- * Vergleicht auf groesser, kleiner oder gleich
- */
- public int compareTo(Object o) {
- int ret = 0;
- if (this.seitenlaenge < ((Quadrat)o).seitenlaenge)
- ret = -1;
- else if (this.seitenlaenge > ((Quadrat)o).seitenlaenge)
- ret = 1;
- return ret;
- }
- /**
- * Überschreibt die String Ausgabe
- */
- public String toString() {
- return "Quadrat mit Seitenlaenge "+seitenlaenge;
- }
- }