Hallo !
Ich möchte eine Klasse entwickeln, die Objekte anderer ebenfalls selbst entwickelter Klassen beinhaltet. Da teilweise ein Zugriff dieser "Unterklassen" untereinander über die Oberklasse benötigt wird, versehe ich die Unterklassen mit einem Parent-Attribut, das vom Typ der Oberklasse ist. Zur Verdeutlichung meines Vorhabens hier eine grobe Skizze:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| type TNetworkClass = class;
TWakeOnLANClass = class procedure WakeUpComputer(Computer: String); constructor Create(Parent: TNetworkClass); private Parent: TNetworkClass; end;
TComputerClass = class procedure Connect(Computer: String); constructor Create(Parent: TNetworkClass); private Parent: TNetworkClass; end;
TNetworkClass = class WakeOnLAN: TWakeOnLANClass; ActiveComputer: TComputerClass; constructor Create; end; |
Falls die Prozedur TComputerClass.Connect scheitern sollte, weil ein Computer aus ist, soll sie über die Oberklasse TNetworkClass die Prozedur TWakeOnLANClass.WakeUpComputer aufrufen. In etwa so:
Delphi-Quelltext
1:
| Parent.WakeOnLAN.WakeUPComputer(Computer); |
Funktioniert alles prima. Das Problem, vor dem ich stehe ist, dass das Projekt massig größer ist, als das oben gezeigte Beispiel. Dementsprechend entsteht viel Code, den ich bei dieser Lösung komplett in eine Unit schreiben muss. Ich habe also vor, die unterschiedlichen Klassen in separaten Units unterzubringen, um die Übersicht zu behalten. Leider muss der Oberklasse die Struktur der Unterklassen, sowie den Unterklassen die Struktur der Oberklasse bekannt sein. Es müssten also die entsprechenden Units im Interface-Teil aufgeführt sein, was zwangsläufig zu einem nicht erlaubten Zirkelbezug führt...
Falls jemand eine Lösung kennt, oder einen Link zu einem Tutorial, das dieses Problem behandelt, parat haben sollte, würde ich mich über eine Antwort freuen.
Danke im Voraus
Eicky
