Forum: Algorithmen, Datenstrukturen und Klassendesign
by stahli,
10. Nov 2018
Ich sehe da jetzt nicht das Problem.
Du könntest in der Basisklasse eine Suchfunktion, die dann nach oben iteriert:
TBase = class
private
FNr: Integer;
FParentObject: TBase;
public
function FoundParentClass(aClassName: String): TBase;
function FoundParentItem(aItem: TBase): Boolen;
Forum: Algorithmen, Datenstrukturen und Klassendesign
by stahli,
6. Nov 2018
Jetzt ohne Delphi kann ich gar nicht sagen, ob das compiliert (ich würde vermuten, dass nicht).
Wenn es compiliert müsstest Du immer prüfen, von welcher Klasse das jeweilige ParentObjekt ist. Du musst also immer mit is und as casten.
Mein Ansatz ist nicht so aufwendig, wie man zunächst vermuten würde.
Du musst nur eine neu benötigte Listenmethode neu implementieren, wenn Du sie erstmalig...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by stahli,
6. Nov 2018
Interfaces bringen jetzt an der Stelle nicht wirklich viel.
Ich würde auch grundsätzlich zu Interfaces raten, aber man muss sich erst damit befassen. Die Klassen muss man dann aber auch differenziert ausgestalten.
Ich würde es so machen:
TBase = class
private
FNr: Integer;
FParentObject: TObject;
Forum: Algorithmen, Datenstrukturen und Klassendesign
by stahli,
6. Nov 2018
Du solltest Deine Listen auch von TBase ableiten und die eigentliche Liste dort nur intern benutzen.
TBaseList wäre dann ein Wrapper um eine normale Liste.