Quadrat: Interface, Comparable, Cloneable

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Quadrat: Interface, Comparable, Cloneable

    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.

    Quellcode

    1. package Quadrat;
    2. import java.util.Arrays;
    3. /**
    4. * @author Torben Brodt
    5. * <p />Quadrat: Übung um den Umgang mit Interfaces, Comparable und Cloneable zu erlernen
    6. * <p />Funktioniert ab Java 1.5
    7. */
    8. public class QuadratApp {
    9. public static void main(String[] args) {
    10. Quadrat q1 = new Quadrat(47);
    11. Quadrat q2 = new Quadrat(11);
    12. Quadrat q3 = (Quadrat) q2.clone();
    13. System.out.println("Clonen: ");
    14. if (q3.equals(q2)) {
    15. System.out.println("Die Quadrate q2 und q3 sind gleich.");
    16. } else {
    17. System.out.println("Die Quadrate q2 und q3 sind ungleich.");
    18. }
    19. if (q3 == q2) {
    20. System.out.println("Die Quadrate q2 und q3 sind identisch.");
    21. } else {
    22. System.out.println("Die Quadrate q2 und q3 sind nicht identisch.");
    23. }
    24. System.out.println("Sortieren: ");
    25. q3.setzeSeitenlaenge(15);
    26. Quadrat[] quadArray = { q1, q2, q3 };
    27. Arrays.sort(quadArray);
    28. for (int i = 0; i < quadArray.length; ++i)
    29. System.out.println(i + 1 + ". " + quadArray[i]);
    30. }
    31. }
    32. class Quadrat implements Comparable, Cloneable {
    33. protected int seitenlaenge=0;
    34. /**
    35. * Konstruktor
    36. */
    37. public Quadrat(int seitenlaenge) {
    38. setzeSeitenlaenge(seitenlaenge);
    39. }
    40. /**
    41. * setzt die geschuetzte Variable
    42. */
    43. public void setzeSeitenlaenge(int seitenlaenge) {
    44. this.seitenlaenge=seitenlaenge;
    45. }
    46. /**
    47. * Vergleicht den Inhalt
    48. */
    49. public boolean equals(Quadrat quadrat) {
    50. return (quadrat.seitenlaenge == this.seitenlaenge);
    51. }
    52. /**
    53. * Klont den Inhalt
    54. */
    55. public Object clone() {
    56. return new Quadrat(this.seitenlaenge);
    57. }
    58. /**
    59. * Vergleicht auf groesser, kleiner oder gleich
    60. */
    61. public int compareTo(Object o) {
    62. int ret = 0;
    63. if (this.seitenlaenge < ((Quadrat)o).seitenlaenge)
    64. ret = -1;
    65. else if (this.seitenlaenge > ((Quadrat)o).seitenlaenge)
    66. ret = 1;
    67. return ret;
    68. }
    69. /**
    70. * Überschreibt die String Ausgabe
    71. */
    72. public String toString() {
    73. return "Quadrat mit Seitenlaenge "+seitenlaenge;
    74. }
    75. }
    Alles anzeigen