а все равно кучу своего дописывать.
Для внутреннего списка я обычно использую TObjectList, который как Items с соотв. методами доступа вытягиваю в интерфейс.
Вообще, в задании не указано как делать очереди. Т.е. имплементация может быть любая. только вот я не понимаю зачем для данной задачи вообще очередь...
Я бы делал как-то так:
Код:
type
TBaseClass = class
public
// create new instance
constructor Create; virtual; overload;
// create instance and load from stream
constructor Create(AStream : TStream); virtual; overload;
// save/load object to/from stream
procedure SaveToStream(AStream : TStream); virtual; abstract;
procedure LoadFromStream(AStream : TStream); virtual; abstract;
end;
TApartment = class(TBaseClass)
priivate
FNumber : Integer;
FSquare : Integer;
public
procedure SaveToStream(AStream : TStream); override;
procedure LoadFromStream(AStream : TStream); override;
property Number : Integer read FNumber write SetNumber;
property Square : Integer read FSquare write SetSquare;
end;
THouse = class(TBaseClass)
private
FNumber : Integer;
FItems : TObjectList;
public
procedure SaveToStream(AStream : TStream); override;
procedure LoadFromStream(AStream : TStream); override;
function Add(AItem : TApartment) : Integer;
function AddNew(ANumber, ASquare : Integer) : Integer;
procedure Remove(AItem : TApartment);
procedure Delete(AIndex : Integer);
procedure IndexOf(AItem : TApartment) : Integer; overload;
procedure IndexOf(ANumber : Integer) : Integer; overload;
property Number : Integer read FNumber write SetNumber;
property Items[Index : Integer] : TApartment read GetApartment;
property Count : Integer read GetCount;
end;
и т.д.
когда перенесешь код в среду, то нажми Ctrl+Shift+C и среда догенерит все, чего не хватает (сетеры/гетеры и заготовки для методов).