C# Zugriff auf Variablen anderer Klassen

bradley

Grünschnabel
Hallo ich habe aktuell ein eigentlich simples Problem was mich aber trotzdem etwas überfordert.

In meinem Projekt habe ich aktuell mehrere Klassen.
Eine Hauptklasse von der ich andere Klasse Instanziere um verschiedene Aufgaben zu übernehmen.
Eine dieser Klassen braucht jetzt aber wieder ein rectangel aus meiner Hauptklasse um korrekt zu funktionieren.

In der Hauptklasse habe ich bereits alles auf Public gesetzt, und wenn ich in der Hilfsklasse eine weitere Instanz der Hauptklasse mache komme ich in eine Endlosschleife.

Um es zusammen zu fassen

Hauptklasse initialisiert und instanzier Helpklasse.
Hauptklasse kann auf Help zugreifen.

Helpklasse kann trotz public setzung der Hauptklasse nicht zugreifen.
 
Hi und Willkommen bei tutorials.de,

@Endlosschleife (eigentlich Rekursion): Das ist verständlich.
Hauptklasse instanziert Nebenklasse inst Haupt inst Neben inst Haupt ...

@Alles public: Mach das nicht.
Stattdessen eine Methode getMyRectangle oder so irgendwie.
Die ist public und return´ed das Rectangle.
Dieses selbst ist aber private/protected.

@Übergeben:
Statt in der Nebenklasse eine neue Instanz anzulegen,
einfach die Referenz auf die Hauptklasse übergeben.
C#:
class Nebenklasse
{
    protected Hauptklasse haupt;

    public Nebenklasse(Hauptklasse h)
    {
        this.haupt = h;
    }

    ...
    //haupt verwenden...
}


//In der Hauptklasse:
Nebenklasse n = new Nebenklasse(this);

Gruß
 
^_^ Perfekt, danke für die Hilfe, werde ich heute abend ausprobieren.

edit:
:) Okay danke, was du mir gepostet hast, funktioniert :)

Jetzt leider die nächste Frage:
Ich nehme mein Ursprungsbeispiel:
Nebenklasse1 will auf Hauptklasse zugreifen, ich löse das in dem ich eine Referenz der Hauptklasse erzeuge ( YEAH :D )

Jetzt möchte ich aber auch noch von der Nebenklasse 1 auf Nebenklasse2 per referenz zugreifen, wie kann ich das den realisieren ****?
 
Hallo bradley,

ich befürchte, mit den gegenseitigen Referenzierungen erzeugst du irgendwann mal ein heilloses Durcheinander.

(1) Ist es notwendig, die Nebenklassen schon bei der Konstruktion der Hauptklasse zu erzeugen oder würde es reichen, sie erst dann zu instanziieren, wenn sie ihre Aufgaben erfüllen sollen? Sofern die Nebenklassen keine Stati oder Ergebnisse speichern müssen, würde letzeres reichen. Im anderen Fall könnte man überlegen, die Datenhaltung in der Hauptklasse zu realisieren, vielleicht in einer eigenen Klasse, die von der Hauptklasse instanziiert wird.

(2) Das Erfüllen einer Aufgabe verbinde ich mit dem Aufrufen einer Methode der Nebenklasse. Falls dort Daten aus der Hauptklasse benötigt werden, kann man die doch direkt an die Methode übergeben, anstatt eine Referenz auf die Hauptklasse mitzuschleifen.

(3) Wozu sind die "Querschüsse" auf andere Nebenklassen gut? Wenn Nebenklasse_1 eine Aufgabe erfüllt kann man das Ergebnis entweder in der Hauptklasse zwischenspeichern oder gleich als Parameter an eine Methode von Nebenklasse_2 übergeben. Falls das Problem die Datenhaltung ist, siehe (1).

Noch eine andere Möglichkeit: Wenn eine Klassenmethode nicht mit Daten-Membern der Klasse arbeit, könnte man sie auch als 'static' deklarieren. Damit wäre der Zugriff auch ohne Instanziierung möglich.

Gruß
MCoder
 
Zurück