Ich geh jetzt mal davon aus, dass du die Klassen "Fenster" & Co. selbst geschrieben hast.
Du brauchst also kein = Fenster.open();
Mach doch gleich so:
C#:
Erdgeschoss.Wohnzimmer.Fenster["Vorne"].Open();
Das mit den geschachtelten Klassen ist einfach. Ich demonstriere es dir, indem ich eine Eigenschaft in C# und danach eine Erklärung schreibe:
C#:
private Storey _erdgeschoss;
...
public Storey Erdgeschoss
{
get
{
return this._erdgeschoss;
}
set
{
this._erdgeschoss = value;
}
}
So, du siehst hier jetzt ein privates Feld _erdgeschoss vom Typ Storey (Stockwerk/Etage). Diese Etage hat auch Räume, in einer Klasse "Room". Dann schauen wir mal die Klasse "Room" an:
C#:
public class Room
{
private Dictionary<string, Window> _fenster;
...
public Dictionary<string, Window> Fenster
{
get
{
return this._fenster;
}
set
{
this._fenster = value;
}
}
}
Also wenn du dann folgendes machst:
C#:
Erdgeschoss.Wohnzimmer.Fenster;
Dann bekommst du erst über den Getter von der Eigenschaft "Wohnzimmer" die Instanz des Raumes vom Typ "Room" und dann über den Getter der Eigenschaft "Fenster" die Instanz der Fensterliste vom Typ Window des Wohnzimmers. Du kannst also dann immer auf alle Methoden und Eigenschaften der Instanz, die du über den Getter bekommst, zugreifen, und das machst du auch. Ist es verständlich?
PS: Die Klasse Dictionary ist von mir hier benutzt worden, aber nur weil ich es für sinnvoller halte. Was und wie du es benutzt ist natürlich dir überlassen, es geht hier hauptsächlich um die Verschachtelung in den Eigenschaften.
Mfg JustShinigami