Hier bietet sich das Design Pattern
Kompositum an.
Es gibt verschiedene Möglichkeiten, dies zu implementieren.
Mehrere Beispiele dafür findet man in der
VCL.
TComponent - diese Klasse ist (auch) ein Kompositum.
Jede TComponent-Klasse hat die Properties:
Delphi-Quellcode:
property ComponentCount : integer;
property Components[index:Integer] : TComponent;
Zusätzlich gibt es die Methoden InsertComponent und RemoveComponent.
Damit lassen sich beliebige Bäume aus TComponent-Objekten aufbauen.
Du könntest die Klasse TComponent direkt als Basisklasse für TBenutzer, TArbeitsgruppe und TTermine verwenden.
Dann erbst du allerdings Eigenschaften, die du vielleicht nicht unbedingt haben möchtest.
Oder du baust dir deine eigene Basisklasse nach obigem Prinzip, die aber nur das kann, was du direkt benötigst.
Ein weiteres Beispiel ist
TControl.
Jedes Control hat intern eine Liste von Controls, die aber nach Aussen über ein Array-Property (Controls[])
abgebildet wird, sowie das Property ControlCount, das die aktuelle Grösse der Liste angibt.