PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [JAVA] Adapterklassen und Interfaces



McSnoop
03-11-2004, 09:21
das ist doch fast das fast das gleiche nur das bei dem einen noch die konkrete Methode steht ,nämlich bei den Adapterklassen, oder???

Die Interfaces sind ja rein abstract.

Warum nimmt man dann nicht nur Adapterklassen und überschreibt einfach die methoden die man anders benötigt??

mfg
Snoop

Alex_K
03-11-2004, 10:06
ich weiß nicht genau was du mit adapterklasse meinst, den begiff kenne ich nur aus der gui programmierung.

interpretiert zur allgemeinen verwendung in java:
inferfaces haben im vergleich zur normalen vererbung den vorteil dass eine klasse auch mehrere interfaces implementieren kann, aber nur von einer erben kann.

interpretiert auf die GUI programmierung:
grundsätzlich ist es egal ob du eine andapterklasse oder ein interfaces verwendest. wenn du eine adapterklasse verwendest verwendest du automatisch das interface mit (da dass die atapterklasse implementiert).

das interface hat manchmal vorteile:
wenn du sowie alle funktionen der adapterklasse überschreiben würdest, dann kann du auch gleich das interface nehmen, und ersparst dir so eine zwischenklassen.
wenn du in einer klasse mehrere interfaces implementieren willst, dann gibt es (wie schon gesagt) sowieso nur den weg über das interface.

McSnoop
03-11-2004, 10:25
ich bin hier grad dabei, verfahren der Ereignis-Programmierung und da ist ein unterpunkt Adapterklassen.

es wird an einem Beispiel gezeigt das es einmal funktioniert via implementation und einmal über Adapterklasse:

Implementation:




import ......

class Modell02Ereignis implements MouseListener {
// definitionen
public void mouseClicked(MouseEvent e){
// konkrete methode
}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
}




Bei dem gleichen Beispiel nur mit Adapterklasse schauts dann so aus:




import ......

class Modell02Ereignis extends MouseAdapter {
// definitionen
public void mouseClicked(MouseEvent e){
// konkrete methode
}
}



aber das schaut doch ganz nach normaler vererbung aus und das was man spezialisieren will überschreibt man halt.

Hier im Buch steht ausserdem als Bewertung:

Adapterklassen können die Programmierung der Ereignis-Behandlung vereinfachen

Adapterklassen bieten erhebliche Vorteile bei der Programmierung kleinerer Ereignis-Behandlungen im Zusammenhang mit lokalen und anonymen Klassen.


mfg
snoop

peschmae
03-11-2004, 13:04
ja und? Der Hauptpunkt ist der schon erwàhnte: Eine Klasse kann mehrere Interfaces implementieren aber nur von einer Klasse abgeleitet sein.

Das ist so bei Java - keine Mehrfachvererbung. Wenn es die gàbe (was aber eine grundlegende Design-Entscheidung ist) dann wàren interfaces total èberflèssig. So aber halt nicht.
Da benutzt du halt meist Adapter-Klassen ausser wenn die Parent-Klasse schon was anderes sein muss.

MfG Peschmà

anda_skoa
03-11-2004, 19:25
Warum nimmt man dann nicht nur Adapterklassen und überschreibt einfach die methoden die man anders benötigt??


Wenn man zum Beispiel alle Methoden des Interface implementieren muss, denn dann bringt der Adapter nix.

Oder wenn man sich die extra Subklasse ersparen will.

Aber im Grunde stellt sich die Frage nicht. Der Adapter ist ja Hilfe der Implementierung, das Interface braucht das Framework ja auf jeden Fall zur Schnittstellendeklaration, sonst gäbe es ja auch keinen Adapter :)

Ciao,
_