Guten Abend,
ich programmiere noch nicht lange objektorientiert, deshalb mag diese Frage ein wenig dümmlich vorkommen.
Ich habe nun einen Fall erzeugt, in welchem eine Klasse eine Liste von anderen Objekten enthält, dessen privaten Eigenschaften von der übergeordneten Klasse gesetzt werden müssen, nach außen hin aber readonly sein sollen.
Hier einmal ein Beispiel:
Delphi-Quellcode:
TMy_File = class(TObject)
private
FFileID: Cardinal;
FFileName: String;
FFileSize: Cardinal;
FFileStatus: Byte;
public
property FileID: Cardinal read FFileID;
property FileName: String read FFileName;
property FileSize: Cardinal read FFileSize;
property FileStatus: Byte read FFileStatus;
constructor Create();
end;
TMy_Bunch = class(TObject)
private
FFiles: Array of TMy_File;
FCount: Integer;
function getText(): String;
public
property Count: Integer read FCount;
property Text: String read getText;
constructor Create;
destructor Destroy; override;
procedure Delete(Index: Integer);
procedure Add(const MyFile: TMy_File); overload;
procedure SetValue(FileID: Cardinal;FieldName: String;Value: String);
procedure Clear;
procedure Append(const collection: TMy_Bunch);
end;
TMy_Bunch ermittelt nun Dateiinformationen, die TMy_File nur sehr umständlich und mit viel Mehraufwand ermitteln könnte. Diese Eigenschaften der Dateien sind jedoch statisch und sollen deshalb readonly sein.
Mein Behelfsmäßiger Ansatz war, einen Konstruktor für das Objekt zu bauen, welcher alle Werte übernommen hat. Das finde ich aber äußerst hässlich.
Gibt es dazu eine elegantere Methode?
mfG