Einzelnen Beitrag anzeigen

Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Verwalten von Objekten in einer Container-Klasse

  Alt 12. Mär 2007, 22:44
Es gibt zwei Arten von Wiederverwendung in der OOP: Vererbung und Komposition.
Bei der Vererbung hat der neue Typ alle "Features" (Eifel-speak ) des Vorgängers.
Bei der Komposition hält man eine Instanz eines anderen Types als Feld und verwendet diese Instanz.
Somit hat man eine bessere Kontrolle über das, was von außen verwendet werden kann.

Eine streng typisierte Liste durch Erben von TList ist ein Ding der Unmöglichkeit.
Du hast immer noch die Methode Add, welche einen Pointer nimmt und man kann immer noch einen Pointer auf TIrgendwas reinwerfen.
In deinem Beispiel wäre es also besser ein Feld vom Typen TObjectList herzunehmen, welches deine Daten hält. Aber nach außen bit du wirklich streng auf deine Elementenklasse typisiert.
Außerdem klingt eine Klasse namens "AddressBook" wie etwas, was mehr als nur ein paar Adressen enthält. Eher wie eine weitere Fachklasse, in der ein öhm Adressbuch modelliert ist.
Bleistift:
Delphi-Quellcode:
TContactList = class
private
  fInnerList : TObjectList;
  function GetItem(aIndex: Integer): TContact;
  procedure SetItem(aIndex: Integer; aItem: TContact);
protected
  property InnerList : TObjectList read fInnerList;
public
  destructor Destroy; override;
  procedure Add(aItem : TContact);
  procedure Delete(aIndex: Integer);
  property Items[aIndex: Integer]: TContact read GetItem write SetItem;
end;

TAddressBook = class
...
public
  property Contacts : TContactList read fContacts;
...
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat