Auf Thema antworten

Als erstes solltest du aufhören, von "anderen Klassen" zu reden und anfangen über "andere Objekte" oder "andere Instanzen" zu reden. Das ist schon mal ein großer Schritt in Richtung Verständnis. Eine andere Klasse ist nur ein Ort auf deiner Festplatte, wo ein Muster gespeichert ist. Die Klasse hat keine Bedeutung, außer eine Vorlage zu sein.. Ein anderes Objekt hingegen ist etwas, das im RAM erzeugt wird, ist ein anderes Ding sozusagen. Du kannst zwei Dinge(Instanzen) der selben Klasse haben, die jeder seine eigenen Eigenschaften und Methoden haben, die sich nicht gegenseitig in die Quere kommen. DASS Dinge zu einer bestimmten Klasse gehören, versteht sich von selbst.


"Wie greift ein Objekt einer anderen klasse auf diese Settermethode zu? Dazu muss dem ja eine Referenz des Realspiel Objekts übergeben werden."

Natürlich. Um auf die Eigenschaften eines Objekts zugreifen zu können, muss man das Objekt ja erst mal kennen.


Was du ganz hinten geschrieben hast, geht in die Richtige Richtung, falls deine Nebenklasse Objekte der Klasse Hauptklasse braucht, um zu funktionieren.

Getter und Setter sind auch nur Methoden, das passt schon. Sie dienen dazu, kontrollierten Zugriff auf die Eigenschaften zu erlauben anstatt jedem Dödel zu erlauben, Müll reinzuschreiben. Dadurch kannst du abfangen, dass jemand ungültige Daten übergibt oder womöglich eine Liste oder ein Objekt komplett löscht. Direkter Variablenzugriff ist ein großes Nono. Besser noch als die Klasse zu übergeben und im anderen Objekt auslesen zu lassen, ist das andere Objekt so zu gestalten, dass es nur die Daten braucht, nicht aber das Containerobjekt selbst.


Du willst in einem Textfeld ja nur Text anzeigen und keine Spieler verwalten.


[CODE]class Main {

  public static void main(...) {

      new Spielelogik().run();

   }

}


class SpieleLogik {

  Spielbrett brett = ...;

  List<Spieler> spieler = new ArrayList<>();

  public void run() {

      spieler.add(new Spieler());

      meineUI.printSpielername(spieler.get(0).getName()); //anstatt die Spielelogik zu übergeben und eine printMethode dann die Logik auslesen zu lassen, was völliger Unsinn ist. Aber das hast du in einigen deiner statischen Methoden so gemacht.

      ...

    brett.setzeFigur(spieler.getFigur(2), feldIndex);

   }

}


class Spieler {

   String name ...;

}[/CODE]


Dein Hauptfehler besteht darin, dass du dich per copy/paste in ein Projekt gestürzt hast, das weit jenseits deiner aktuellen Fähigkeiten liegt. Du hättest kleiner anfangen und erst mal Grundlagen lernen sollen.



Oben