Aufruf auf Objekt mit übergebenem Wert?

Edward

Mitglied
Hallo ich hab folgende Aufgabe:

Code:
interface [B]Ordnung[/B] {

                public abstract boolean [B]kleiner[/B]( Object e ).

}

Es soll true zurückgegeben werden, wenn das Objekt, auf dem der Aufruf erfolgt, kleiner ist, als das Objekt, das beim Aufruf übergeben wird – ansonsten false.



Schreiben Sie eine Klasse Zahl mit einem Attribut namens wert vom Typ int, die dieses Interface korrekt implementiert.

Ich verstehe nicht ganz: Soll ich eine Klasse schreiben, die einen Wert bekommt und die dann einen Aufruf auf eine Zahl machen soll? Oder wie soll man das umsetzen?
 
Ein Attribut ist ein Datentyp, das in der Klasse an sich definiert wird.
Java:
public class MyClass
{
      private int myAttrib;
}

Das Object, dass du in der Methode kleiner bekommst, muss erstamal gecastet werden. (Vorher prüfen, ob es ein Ordnungsobject ist).
Da dein Interface keine getWert() Methode hergibt, muss du dann schauen, ob es ein 'Zahl'-Object ist. Die Zahl-Methode braucht eine getWert-Methode sähe so aus:

Java:
public class Zahl extends Ordnung
{
      private int wert;

      public int getWert()
      {
           return wert;
      }
 
      public void setWert(int wert)
      {
             this.wert = wert;
       }

      public boolean kleiner(Object o)
      {
            if(!o instanceof Ordnung)
                    return false;

             if(!o instanceof Zahl)
                    return false;

             Zahl z = (Zahl) o;
             //Das musst du jetzt aber selber machen
   
       }
}

EDIT: Falls du dich fragst wofür "if(!o instanceof Ordnung)" das ist für den Fall, dass eine Universal Methode in getWert() o.ä. in deine Abstrakte-Klasse kommt.
 
Zuletzt bearbeitet:
Vielen Dank für die Antwort! Noch eine Frage: bedeutet "Object" im Konstruktor dass z.B. kein String sondern eine erzeugte Instanz eines Objektes übergeben wird?
Edit: String ist ein Objekt 😀
 
Zuletzt bearbeitet:
Ich würde auch einen primitiven Datentypen als Object ansehen.
In java gibt es auch die Klasse Integer oder String die sich wie Objekte verhalten.
Ich meine String ist sogar ein Object.

Für mich hieße diese Ausage nur, dass ein Object/Datentyp im Konstruktur instanziert wird.
Egal welcher Datentyp/welches Object.

Java:
public class Zahl extends Ordnung
{
      private int wert;
      private Integer wertObject;     

      public Zahl(int wert)
      {
            this.wert = wert;             //Kein wirklichs Object (Würde mir reichen und würde sagen könnte auch gemeint sein)
            this.wertObject = new Integer(wert); //Auf jeden fall eins    (Das ist  zu 100% mit der Aussage gemeint)
       }
     //Weitere Methoden
}

Aber ich gehe auch stark davon aus, dass sich da die Geister scheiden werden..
Ich glaube aber 'sauberer' wäre es, wenn man die primitiven Datentypen als kein Object ansieht. Aber ich für mich würde es wie gesagt anders sehen.
 
Noch eine Frage: Kann man deine ersten drei Blöcke nicht einfach sparen indem man einen Konstruktor für Zahl implementiert? Oder hat das einen Sinn das die Zahl private ist? Weil verändert werden kann sie ja durch die getter und setter sowieso.
Edit: Grad 2. Beitrag bemerkt 😀
 
Natürlich kann man die Zahl auf public setzten Getter und Setter rausschmeißen und den Konstrukor dafür verwenden.
Allerdings zieht das auch Nachteile mit sich sich.

Ich halte es für sauberer mit Getter und Setter zu arbeiten, auch in Hinsicht der
Datenkapselung, wenn du dich da mehr für intressierst kann ich dir folgenden Artikel empfehlen.
 
Zuletzt bearbeitet:
Sehr guter Artikel, Danke dafür. Das ist jedoch eine Klausuraufgabe daher würde ich auf die getter und setter verzichten (Zum Teil weil auf Papier der Code dadurch größer wird)
 
Kann jeder machen, wie er mag.
Ich habe in meinem Klausuren immer mit Getter und Setter gearbeitet.
Aber ist auch geschmsckssache 🙂
Dann wünsche ich dir mal viel Erfolg für die bevorstehende Klausur!
 

Neue Themen


Zurück
Oben