Создание коллекций
Для создания коллекции следует прежде всего определить тип тех данных, которые будут в ней храниться. Например, Вам необходимо создать электронный каталог Вашей личной библиотеки. В этом случае для каждой указанной в каталоге книги можно выделить пять полей данных: автор, название, издательство, год издания и количество страниц. Создадим новый объект 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}