![]() |
OOP: Unidirektionale Beziehung wie realisieren?
Hi,
ich wollte gerade mein Projekt anfangen, da ist mir aufgefallen das ich noch gar nicht weiß wie man unidirektionale Beziehungen zwischen Klassen herstellt. Also, Beispiel: Ich habe 3 Klassen: cSteuerung, cSpieler und cSpielfeld. Geplante Assoziationen: cSteuerung kennt cSpieler, cSpieler kennt cSpielfeld, cSpielfeld kennt cSteuerung. Bisher sah das dann bei mir so aus:
Delphi-Quellcode:
Und im Konstruktor wird dann ein Objekt der Klasse cSpieler instanziiert (Spieler:=cSpieler.create). Genau das ist aber jetzt mein Problem, da ja auch andere Klassen die Selbe Klasse und das selbe Objekt von dieser Klasse kennen sollen. Ich kann also nicht in jeder Klasse ein neues Objekt erzeugen..uses uSpieler; // Diese beiden Units enthalten jeweils die Klassen type Steuerung=class private Spieler: cSpieler; public constructor create(); end; Deswegen denke ich muss man ähnlich wie bei der bidirektionalen Beziehung vorgehen und dem Konstruktor eine Referenz übergeben..? Ich hab jetzt schon dies und das durchüberlegt, aber ich komme nicht drauf. Entweder sind noch gar keine Objekte der Klasse erstellt so das ich keine Referenz übergeben kann oder ich lande wieder beim Alten. Ich hoffe Ihr könnt mir am besten ein kleines Beispiel geben wie oben genannte Assoziationen in Delphi aussehen müssten. Danke + Grüße Passi |
Re: OOP: Unidirektionale Beziehung wie realisieren?
Zitat:
|
Re: OOP: Unidirektionale Beziehung wie realisieren?
in dem Fall wäre es das beste die Basisklassen innerhalb einer Unit zu haben und dann forwarddeclarationen zu verwenden:
Delphi-Quellcode:
type
TSpielfeld = class; TSpieler = class; TSteuerung = class(TObject) public constructor Create(ASpieler: TSpieler); end; TSpieler = class(TObject) public constructor Create(ASpielfeld: TSpielfeld); end; TSpielfeld = class(TObject) public constructor Create(ASteuerung: TSteuerung); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz