Quote:
Originally Posted by Zunft
Die PDF existiert nicht.
|
Komisch .. zum Zeitpunkt des Postens ging der Link noch
Aktueller Link wurde nun jedoch editiert.
Quote:
Originally Posted by Zunft
Wo genau ist das Problem? Eine Lösung hast du ja scheinbar schon.
Du hast ein Interface, welches die Struktur vorschreibt. Die Klassen Rectangle und Circle implementieren dieses Interface. Dadurch kannst du ein Array mit Bezug auf das Interface erstellen und darin sowohl Rectangle als auch Circle (=jede Geometric implementierende Klasse) speichern.
|
Ohje, anscheinend hatte ich gar kein Problem, ich war wohl nur so extrem übermüdet, dass ich den Iterator
"[i]" nach this.shapes vergessen hatte...
Edit: Nee, hatte wohl doch 'ne Lücke in meinem Verständnis. Dachte, dass man nach der For-Schleife sozusagen bereits beim gewünschten Objekt ist und diesen dann normal mit this.shapes aufrufen kann .. (hatte den selben Fehler nämlich soeben wiederholt gemacht ... lol)
Danke!
Quote:
Originally Posted by Zunft
P.S.: Lösche doch nicht deinen Startpost. Wenn jetzt irgendjemand ein ähnliches Problem hat, kann er mit dem Thema hier nichts mehr anfangen und muss ein neues erstellen.
|
Da war ich wohl etwas sehr egozentrisch unterwegs, werde ich mir für die Zukunft merken!
Quote:
Originally Posted by sk8land
instanceof ist hier allerdings nicht notwendig und sollte generell möglichst selten benutzt werden.
|
Mein Intention war es zu prüfen, ob das sich im Array befindliche Objekt nun zu Circles oder zu Rectangle gehört, um die entsprechende Funktion aufzurufen ....
Mir ist erst gerade aufgefallen, dass solch eine Unterscheidung absolut keinen Sinn macht, weil der Compiler je nach Objekt im Array dann selbstständig entscheidet, welche Methode ädaquat sein wird .. oder?
@ Zunft & sk8land Danke für eure Hilfe
Neue Frage:
Bei der Aufgabe 5 müsste ich nun die Breite und Länge der im Array vorhandenen Objekte verändern, leider kann ich auf die Getter- und Setter-Methoden der jeweiligen Klassen nicht zugreifen.
(this.shapes[i].getHeight() funktioniert logischerweise nicht, da diese Funktion ja nicht im Interface vorhanden ist.)
Meine Idee war, dass ich mit instanceof prüfe um welches Objekt es sich handelt und dementsprechend ein komplett neues Objekt erstelle und mit diesem dann die Methoden aufrufe und das Array[i] dann mit diesem neuen Objekt überschreibe.
... funktioniert jedoch nicht, da man einem Circle/Rectangle-Objekt kein Geometric "zuweisen" kann
Quote:
Originally Posted by sk8land
Genau, allerdings entscheidet sich das erst zur Laufzeit. Der Compiler weiß noch nicht, welche Klassen die Array-Elemente haben. Dass man das so grob versteht soll wahrscheinlich der Sinn der Übung sein.
|
Das ist sehr wahrscheinlich, denn soeben bin ich diesem Problem erneut begegnet.
1d sollte es natürlich heißen.