EventBehandlungsklassen von einer Basisklasse ableiten sinnvoll?

Status
Nicht offen für weitere Antworten.

icarus2

Top Contributor
Huhu

Um etwas meine Fähigkeiten mit Swing und Events zu verbesseren möchte ich einen kleinen Taschenrechner programmieren.

Für die Ereignisbehandlung hab ich folgende Idee:

Ich erstelle eine Basisklasse, in der gewisse Objekte, die oft zur Laufzeit gewechselt werden im Konstruktor übergeben bekomme und diese dort instanziere. Diese soll auch Methoden enthalten, mit denen die Objekte verändert werden können. Die Methoden werden so deklariert, dass sie in den Unterklassen nicht überschrieben werden können in den Unterklassen.

Von dieser Basisklasse sollen anschliessend mind. 3 Klassen abgeleitet werden, die verschiedene Events abfangen. In diesen Klassen können dann anschliessend mit super Methoden der Basisklasse aufgerufen werden, um dort diese Objekte abändern zu können. Somit hab ich für alle 3 Unterklassen gleiche Methoden.

Bei der Vererbung werden auch die Objekte vererbt, somit hätte ich stets direkten Zugriff auf alle Objekte der Basisklasse, stimmt das?

Warum halte ich das für eine gute Idee?
Ich muss nur einer einzigen Basisklasse diese Objekte übergeben. Dadurch, dass die Methoden nicht überschrieben werden dürfen hab ich immer die Garantie, dass die Methode existiert und die 3 Unterklassen einheitlich sind.


Da ich immer daran interessiert bin etwas möglichst sinnvoll zu programmieren und nicht nur dafür zu sorgen, dass das Programm läuft wäre ich jetzt gerne auf die Meinungen von erfahrenen Programmierern (euch ;-) ) gespannt. Falls meine Idee schlecht ist, wäre ich natürlich froh um Anregungen wie man das besser lösen könnte.
 
klingt allgemein nach sinnvollen Vorgängen,
aber noch zu überlegen:

du hast
A a;
B b;
C c;
D d;

x = new ListenerX(a,b,c,d);
y = new ListenerY(a,b,c,d);
z = new ListenerZ(a,b,c,d);

dann ist das schon ziemlich viel Code, in jeder der Subklassen musst den Konstruktor auch wiederholen,

etwas sparsamer wäre evtl.


A a;
B b;
C c;
D d;

k = new Kenner(a,b,c,d);

x = new ListenerX(k);
y = new ListenerY(k);
z = new ListenerZ(k);

also ein Objekt für die vielen Objekte, welches an die Eventklassen übergeben wird
 
Soweit ich deine Lösung verstanden habe wäre dies sinnvoll, wenn z.B. ein JButton bei allen 3 Listenern angemeldet werden muss.

Es wird aber so sein, dass jeder JComponent nur bei einer einzigen Listenerklasse geaddet werden müssen (zumindest ist das bis jetzt so geplant). Also zum Beispiel ein JButton muss nicht bei allen 3 geaddet werden, sondern nur bei einer einzigen Listenerklasse. Ich habe das leider vergessen zu schreiben.

Wenn sie nur bei einer einzigen ListenerKlasse geaddet werden ist das mit k nicht nötig, oder habe ich da etwas falsch verstanden?

*Edit:

Da die Objekte der Basisklasse ja auch vererbt werden muss ich diese ja gar nicht mehr im Konstruktor übergeben oder doch?
 
Zuletzt bearbeitet:
dein letzter edit- Satz macht mich nachdenklich, ob du überhaupt irgendwas vom Thema verstanden hast,

bevor ich jetzt zusätzliche Optimierungen versuche, solltest du am besten einfach nur deine Idee umsetzen,
dabei wirst du dann auch bemerken ob und wo du überall Objekte übergeben musst oder nicht
 
Hmm, dann soll ich vielleicht noch mal das Kapitel der Vererbung durchlesen?

Jo, ich hab leider auch grad bemerkt, dass mein letzter Edit Satz wohl etwas dämlich war -.-


Auf jeden Fall Danke für die Hilfe. Ich versuchs mal hinzubekommen ;-)
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben