Иллюстрированный самоучитель по Turbo Pascal

Создание коллекций

Для создания коллекции следует прежде всего определить тип тех данных, которые будут в ней храниться. Например, Вам необходимо создать электронный каталог Вашей личной библиотеки. В этом случае для каждой указанной в каталоге книги можно выделить пять полей данных: автор, название, издательство, год издания и количество страниц. Создадим новый объект TBook следующего вида:

Uses Objects;
type
PBook = TBook;
TBook = object (TObject)
Autor: PSbring; {Автор}
Title: PString; {Название}
PubHouse: PString; {Издательство}
Year: Word; {Год издания}
Pages: Word; {Количество страниц}
Constructor Init(A,T,PH: String; Y,P: Word);
Destructor Done; Virtual;
end;

Мы включили в объект поля и два основных метода работы с ними: конструктор Init используется для размещения в динамической памяти очередной записи каталога, деструктор Done удаляет записи из кучи. Заметим, что в объекте задаются не сами текстовые строки, а указатели на них (тип PString в Turbo Vision описан как указатель на тип String). Такое размещение данных как правило дает значительную экономию памяти. Например:

Constructor TBook.Init(А,Т,РН: String; Y,P: Word);
begin
Autor: = NewStr(A);
Title: = NewStr(T);
PubHouse: = NewStr(PH);
Year: = Y;
Pages: = P
end; {TBook.Init}

Используемые в конструкторе функции NewStr размещают в динамической памяти текстовую строку, выделяя под нее минимально необходимую память, что значительно выгоднее по сравнению с типичным описанием текстовых полей вида:

type
TBook = object (TObject)
Autor, Title, PubHouse: String;
…..
end;

Для освобождения динамической памяти в деструкторе Done используется процедура DisposeStr:

Destructor TBook.Done;
begin
DisposeStr(Autor);
DisposeStr(Title);
DisposeStr (PubHouse)
end; {TBook.Init}
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.