Objekte "extern" bearbeiten

Yada

Neues Mitglied
Hoi,

ich bin noch relativ neu in Java. Die bisherigen Sprachen die ich kann, habe ich jedoch alle gleich gelernt: einfach drauf los programmieren. Dabei bin ich heute auf ein kleines Problem gestoßen:

Ich wollte mir zum Einstieg bzgl. GUI-Programmierung mein "Lieblings-Start-Programm" programmieren: ein Programm zur Berechnung von Primzahlen. Das ganze so aufgezogen, dass das Fenster über folgende Elemente verfügt:
  • eine Tabelle in der die bisherigen Primzahlen angezeigt werden
  • eine Progressbar zur Anzeige des Fortschritts in Hinsicht auf die aktuelle berechnende Zahl

Die GUI wurde nebenbei mit NetBeans gestaltet - aus Übungszwecken habe ich die GUIs bis vor kurzem einfach noch normal programmiert - aber der Designer verrichtet seine Sache, meiner Meinung nach, doch ausreichend für aktuelle Zwecke.

Mein Problem (evtl. ist es ein Denkproblem, evtl. auch die Tatsache, dass ich mir doch etwas zuviel vorgenommen habe):
Die eigentliche Berechnung der Primzahlen würde ich gern in einen eigenen Thread packen. Mein Problem aber: wie greife ich von meiner "jPrimeMath"-Klasse auf die eigentliche Applikationsklasse zu und kann dort die Objekte verändern (in meinem Fall Tabelle und ProgressBar). Vielleicht ist die Threading-Idee nicht sonderlich sinnvoll - ich wollte eigentlich nur mal einen Thread in Java verbauen um mich bisschen damit zu beschäftigen. Hauptproblem ist aber eben: wie komme ich von meiner Math-Class zu den Objekten meiner Applikation?

Schöne Grüße
 
so wie immer und überall, ein Thema für quasi jede einzelne Java-Klasse der Welt,
um andere Klassen/ Objekte zu kennen braucht man Variablen auf diese,

wie diese zu setzen ist ist eigentlich offensichtlich, aber das gilt für die gesamte Frage,
es gibt entweder eine Codestelle, die zwei Objekte a und b kennt und dann gegenseitig bekannt macht (z.B. main-Methode),
a.setB(b);
b.setA(a);
oder a selber ist die entscheidene Codestelle, erzeugt sich das b bzw. bekommt dieses herein und kann sich selber dann an b weiterleiten

mehr ist fast nicht zu sagen, so allgemein ist die eine Frage in den langen Erklärungen versteckt,

ein Punkt aber noch:
manchmal soll eine Klasse nicht unbedingt andere komplett kennen müssen, z.B. wird ein JButton aus der Java-API
nie die von User x geschriebene Klasse 'MyFrame' kennen,
dafür gibts als Indirektion dann noch Interface wie ActionListener,

die GUI könnte auch irgendeine allgemeine Klasse/ implementiertes Interface mit simpler Methode 'update' an die Logikklasse übergeben,
welche diese Methode in regelmäßigen Abständen aufruft
 
Okay, aber so ganz ist mir noch nicht klar, wie das in der Praxis aussieht.

Vereinfacht:

FirstClass.java
Java:
public class FirstClass {
    public int i;

    public void FirstMethod() {
        // blub
    }
    
    public static void main(String[] args) {
        // ???
        System.out.println(i);
    }
}

SecClass.java
Java:
public class SecClass {
    public void SecMethod() {
        // i = 5!
    }
}

Ich will nun, dass SecMethod() irgendwie i aus der FirstClass ändert- bzw. im eigentlichen will ich ja nicht nur auf Variablen zugreifen können, sondern auf ganze Objekte. Nur wie? Zudem diese Objekte in meinem Primzahlen-Programm nicht Klassenweit sondern sogar nur Methodenweit gelten...
 
SecClass braucht wie schon erwähnt ne Referenz auf FirstClass um da was zu ändern.

Java:
public class SecClass {
    private FirstClass fc;
    
    public SecClass(FirstClass fc) {
      this.fc = fc;
    }

    public void secMethod() {
        fc.i = 5; // Besser: setter verwenden
    }
}

Aufrufen kannst du das dann so:
Java:
FirstClass fc = new FirstClass();
SecClass sc = new SecClass(fc);
sc.secMethod();
System.out.println(fc.i);
 

Neue Themen


Zurück
Oben