Einzelnen Beitrag anzeigen

Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#10

Re: [OOP]: TClassList / TObjectList

  Alt 8. Sep 2004, 13:00
Zitat von Jelly:
Zitat von Delphi Hilfe:
TClass = class of TObject; Wenn Sie in der Deklaration eines Klassentyps keinen Vorfahren angegeben, erbt die Klasse direkt von TObject. Aus diesem Grund ist die Deklaration
Delphi-Quellcode:
TMyClass = class
 ...
end;
identisch mit
Delphi-Quellcode:
type TMyClass = class(TObject)
 ...
end;
Die zweite Variante verdient jedoch aus Gründen der Lesbarkeit den Vorzug.
Das interpretier ich als ganz deutlich, daß TObject der Urvater aller Klassen ist, und jede Klasse mindestens von TObject abgeleitet ist.
Das schon. Aber eine 'Class' ist nicht von TObject abeleitet, sondern nur der Klassentyp.
Deswegen steht da ja auch: TClass = class of TObject; , wobei es hier auf das 'class of' ankommt.

Zur ClassList bzw. ObjectList:

Delphi-Quellcode:
TMyClass = Class(TObject)
end;
TMyClassClass = class of TMyClass;
...

var
   i: integer;
   Klassen: TClassList;
   Objekte: TObjectList;
begin
   Klassen := TClassList.Create;
   i := Klassen.Add(TMyClassClass);

   Objekte := TObjectList.Create;
   Objekte.Add( Klassen[i].Create );
end;
Das hat zur Folge, das in der Liste Objekte nun genau ein Element vom Typ TMyClass ist, das über ein Element der Liste Klasse vom Typ TMyClassClass instanziert wurde.

TClassList wird daher auch gerne für ClassFactories eingesetzt.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat