Java Frage zur Objektorientierung

Elcrian

Commander
Registriert
Feb. 2008
Beiträge
2.493
Ich habe mal eine selten dämliche Frage:

Ich habe 4 Objekte (Applet - GUI - Spiel - Rechner). Das Applet erzeugt "Spiel" und "GUI", "Spiel" wiederum "Rechner".
Wie greife ich nun von "GUI" auf "Spiel" und anders herum zu? Geht um Variablen-Übergaben...

Ich hab gerade echt ein Brett vorm Kopf, bin Java-Autodidakt und wollte neben meinem Buch mal so etwas basteln.
 
Meine erster Gedanke ist die GUI als Observer von Spiel einzurichten.
 
Sorry, war die erste schöne Lösung die mir in den Sinn kam.

Ansonsten kannst du die Objekte auch per Konstruktor übergeben (Applet in den Konstruktor von Game und GUI einfügen und GUI und Spiel in Applet als Variable speichern.)

Sieht dann halt etwas umständlich aus (z.B. in game applet.gui.setLives oder sowas) aber sollte gehen.
 
Zuletzt bearbeitet:
Wie setze ich das dann in meinem Beispiel genau um? Die Objekte sollen ja auch untereinander kommunizieren können.
 
Du brauchst in Applet 2 globale Variablen: Game game und GUI gui.

Dann beim Erzeugen:
game = new Game(deine Argumente, this);
gui = new GUI(deine Argumente, this);

Dann in GUI eine globale Variable Game game und in Game eine GUI gui.
Dann machst du im Konstruktor von Game: gui = applet.gui;
und bei GUI: game = applet.game;
 
PHP:
public class SuMApplet extends Applet
{
    public Game g1;
    public GUI gui1;

    public SuMApplet()
    {
        g1 = new Game(this); 
        gui1 = new GUI(this);
        gui1.erzeuge();
    }
PHP:
public class Game
{  
    public GUI gui1;

    public Game()
    {
       sColor = 1;
       gui1 = SuMApplet.gui1;
    }
Das gibt mir dann aber "non-static variable gui1 cannot be referenced from a static context".

So 100% verstehe ich das System auch noch nicht; in der Oberklasse "Applet" deklariere ich globale Variablen auf die die Unterklassen zugreifen können sollten, in dessen Konstruktor erstelle ich die Unterklassen-Objekte und übergebe ihnen in den () quasi "sich selber"?
 
public Game()
{
sColor = 1;
gui1 = SuMApplet.gui1;
} <- nö.

public Game(Applet a)
{
sColor = 1;
gui1 = a.gui1;
} <- eher

Und sonst zeig halt mal den Rest, und markier was den Fehler wirft (public static void main?)

Warum in Applet das game und die gui rumliegen?
Warum nicht. Applet erzeugt beides und kann dann damit in die Konstruktoren eingebunden werden.
Es kam mir praktisch vor.
 
Zuletzt bearbeitet:
Zurück
Oben