# Drawable und Moveable in Quaxli 2D Spiele Tutorial



## Andi321 (13. Mai 2012)

Bin grad dabei das Tutorial http://www.java-forum.org/spiele-multimedia-programmierung/54795-quaxli-2d-spiele-tutorial.html zu verstehen.Wofür braucht man überhaupt die zwei Interfaces?


----------



## Final_Striker (13. Mai 2012)

Geht das vielleicht auch ein wenig genauer?


----------



## Andi321 (14. Mai 2012)

In dem Tutorial werden zwi Interface ertellt Drawable und Moveable. In diesem Interface werden Methoden geschrieben die leer sind.Da hab ich mich gefragt,wieso man das überhaupt macht.


----------



## Firephoenix (14. Mai 2012)

Weil man in Java nunmal versucht gegen Interfaces zu implementieren.

Nehmen wir mal an du hättest 4 verschiedene Auto-Klassen:
BMW, Audi, VW, Mercedes.

Jede hat eine fahren() - Methode.

Jetzt fahr mal mit jedem Auto in deinem Programm.

Um dir alle Autos zu merken die Fahren können brauchst du eine Liste oder etwas ähnliches, in dem Fall aber entweder 1 extra-liste pro auto-klasse, oder eine Liste aus Object auf der aufrufe dann so aussehen:

für jedes object aus der liste:
bist du ein bmw: dann nach bwm casten und fahren aufrufen
bist du ein audi: dann nach audi casten und fahren aufrufen
...

hättest du dagegen ein Interface FahrbaresObjekt mit einer fahren()-Methode könntest du einfach eine Liste von FahrbaresObjekt erstellen, alle deine Autos da einfügen (da sie das Interface implementieren sind sie zu der Liste zuweisungskompatibel) und wenn du dann mit jedem Auto fahren willst sagst du nur noch:
für jedes FahrbaresObjekt aus der Liste : fahren()
Damit wird die richtige fahren()-Methode aufgerufen die dein konkretes Auto hat, aber der Code wird wesentlich lesbarer und einfacher zu pflegen.

Gruß


----------



## Final_Striker (14. Mai 2012)

Andi321 hat gesagt.:


> In dem Tutorial werden zwi Interface ertellt Drawable und Moveable. In diesem Interface werden Methoden geschrieben die leer sind.Da hab ich mich gefragt,wieso man das überhaupt macht.



Stehst da und nachfolgend doch gut beschrieben?



> Um für die Klasse Sprite einheitliche Methoden zur Verfügung zu stellen, definieren wir
> zunächst 2 Interfaces. Auch dies ist zunächst einmal zusätzlicher Aufwand
> (zugegebenermaßen relativ gering) wird uns aber später das Leben erleichtern.


----------



## Andi321 (14. Mai 2012)

Also ist es in diesem Fall nötig , damit man diese dann alle in einen gemeinsamen Vector einfügen und dann die Methoden bei bedarf aufrufen.


----------



## Andi321 (14. Mai 2012)

Es steht nur da , dass die Schnittstellen das Leben erleitern werden , aber nicht wieso und an welcher Stelle. 
Könnte mir das jemand bitte erklären


----------



## Fu3L (14. Mai 2012)

Genau wegen dem, was du in dem zweiten Teilsatz sagst:
Man kann alle Drawables oder alle Moveables in einer Liste speichern und beim Zeichnen durchlaufen. 
Da macht es keinen unterschied, ob das eine ein Baum oder der große Held ist. In der Zeichenmethode sind alle gleich: Nämlich Drawables. So kann die Zeichenmethode stumpf durchgehen und einfach auf allen Elementen der Liste drawObject(g); aufrufen.


----------

