Klassen-Design-Problem

screaper

Mitglied
Hallo Leute, ich bitte euch um Hilfe!

Klassen Szenario:

Hierarchie:
MainMethode (MainFrame) (ganz oben)
Enthält Methoden für Spiel starten, laden, speichern, beenden

Oberfläche für Spielaufbau (Beinhaltet die Panels in die das Spielbrett
eingefügt wird, sowie die Buttons die zum Spielaböauf gehören)
(Ebene 2)


SpielVariante1 SpielVariante 2 (Ebene3)
Methode die feststellt ob Spiel zu ende
und speichert den Wert ab.



Wie kann ich mit der Methode endGame() aus SpielVariante1 die Methode EndGame() aus Main aufrufen? Oder wie sieht eine Alternative aus?


Kurze Beschreibung: Die Mainmethode erzeugt ein neuses Frame mit Menübar. Dort stehen verscheidne Funktionen zur verfügung. Beim Klick auf Menü "Neustart " wird eine Instanz erzeugt, die die Rahmenbedingungen für das Spiel schafft. Bedienbuttons Beschriftungen etc. Diese erzeugt dann je nach Auswahl ein Spiel nach Variante 1 oder Variante n.

Das Spiel wird nun gespielt udn irgendwann wird festgestellt wer gewonen hat. Dann muss das aktuelle Spiel beendent werden. Die Methode befindet sich aber im MainFrame.
Beim Beenden muss ein Dialog ausgegeben werden, wer gewonen hat (funktioniert) und das Spiel in den Zustand gebracht werden, als wäre keines gestartet worden. Also nur das Programm gestartet worden.

Wie komme ich dahin?


Gruß Screaper
 
Moin,

bin mir zwar sicher, ob ich wirklich verstanden habe, was Du meinst :confused: aber prinzipiell erzeugst Du einfach ein entsprechendes Objekt der gewünschten Klasse und rufst dann darüber die gewünschte Methode auf ....

Gruß
Klaus
 
Hallo Klaus,

ich kann ja kein Objekt erzeugen, dass mich erzeugt! Da liegt das Poblem. Quasi das Huhn und Ei Problem!

Ich muss eine Methode einer Klasse aufrufen, die nd er Hierarchie höher ist.

Anders ausgedückt am Beispiel Binärbaum.

Ich will von einem Blatt aus, die Methode der Wurzel aufrufen.

Klasse 1 erzeugt Objekt der Klasse 2
Klasse 2 erzeugt Objekt der Klasse 3
Jetzt will ich aus Klasse 3 eine Methode aus Klasse 1 aufrufen.
Es handelt sich nicht um Vererbungsbeziehungen!

Ich hoffe mein Problem ist klargeworden.

Ich kann ja nicht in der Klasse 3 ein neus Klasse1 Obejekt erstellen und dann dort die Methode aufrufen...


Gruß Screaper
 
Dann übergib' das Objekt der Wurzel im Konstruktor an die tieferen Klassen !!
Code:
Klasse1 objK1;
...
Klasse2 objK2( Klasse1 objK1a );
// usw.

Nun kannst Du im Objekt objK2 das Objekt objk1a und seinen Methoden nutzen!

Gruß
Klaus
 
Hallo Klaus,

werde ich machen. Aber ist das guter OO- Stil?
Ich hab nicht so die Ahnung. Aber ein gewisses Maß an Ästhetik sollte schon vorhanden sein.

Ich hab halt nicht so die Ahnung, wie guter Code aussehen muss.

Funktionieren tuts einwandfrei!

:-)
 
Hallo sceaper,

über Ästhetik bei Programmieren sollten wir lieber nicht diskutieren ... soviel Zeit habe ich nicht :D

Im übrigens ist es doch gerade Sinn und Zweck der OOP, Objekte zu erstellen und zu benutzen.

Falls es Dir dann wirklich 'rein optisch' stört, ein Objekt durch zureichen, dann musst Du halt Deine Klasse so anlegen, dass es nicht notwendig ist! Ob dass dann besser "aussieht", ist aber die Frage ... :p

Gruß
Klaus
 

Neue Beiträge

Zurück