Hallo, Delphi-Praktiker,
ich habe folgendes Problem, hier dargestellt am Beispiel eines Fischteichs:
Gegeben: Die Klassen TFisch, TFischListe und TTeich, jeweils in eigenen Units
Delphi-Quellcode:
unit UFisch
interface
type
TFisch =
class(TObject)
Art:
String;
Gewicht: Integer;
end;
Delphi-Quellcode:
unit UFischListe;
interface
uses Contnrs, UFisch;
type
TFischListe =
class(TObjectList)
// Hier überschreibe ich noch die entsprechenden Methoden von TObjectList, dass alle Elemente vom Typ TFisch sind
end;
Delphi-Quellcode:
unit UTeich;
interface
uses UFischListe;
type
TTeich =
class(TObject)
Laenge: Integer;
Breite: Integer;
Hoehe: Integer;
Fische: TFischListe;
end;
Jetzt sollen meine Fische aber mehr können, zum Beispiel andere Fische fressen. Dafür muss ein Fisch aber irgendwie auf die anderen Fische im Teich zugreifen können. Wie kann ich das machen? Wenn ein Fisch alle anderen Fische im Teich kennen soll, muss er ja auf den Teich zugreifen können. Dann aber löse ich ärgerlicherweise einen zirkulären Bezug aus:
Delphi-Quellcode:
unit UFisch
interface
uses UTeich;
//<-- Hier kommt es zu einem zirkulären Bezug!
type
TFisch =
class(TObject)
Art:
String;
Gewicht: Integer;
Teich: TTeich;
//<-- Hier kommt es zu einem zirkulären Bezug!
end;
Viele Grüße
Klaus-Peter