Показать сообщение отдельно
  #3  
Старый 01.07.2011, 01:05
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,100
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

а все равно кучу своего дописывать.
Для внутреннего списка я обычно использую 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 и среда догенерит все, чего не хватает (сетеры/гетеры и заготовки для методов).
Ответить с цитированием