13.9. Модули, экспортирующие объекты
Сама реализация типа «объект» наводит на мысль об использовании модулей для определения объектов. Типы объектов можно описывать в интерфейсном разделе модуля, а тела процедур и функций, реализующих методы объектов, определяются в разделе реализации модуля. Если необходимо экспортировать переменные типа «объект», причем содержащие виртуальные методы, то для таких переменных в разделе инициализации можно разместить вызовы конструкторов. Модули могут иметь свои собственные опре-
- 294 -
деления типов объектов в разделе реализации: такие типы подчиняются тем же ограничениям, что и любые другие типы, определенные в разделе реализаций модуля. Тип объекта, определенный в интерфейсном разделе модуля, может иметь производные типы в разделе реализации модуля. В случае, когда модуль B использует модуль A, модуль В может определять производные типы от любого типа объекта, экспортируемого модулем A.
Из виртуализации объектов следует важное свойство объектно-ориентированных программ — это расширяемость или открытость. С чем оно связано? Модули, содержащие программные инструментальные средства (например, программы работы с меню, с окнами, с графикой и т.д.), могут поставляться конечным пользователям в виде подключаемых TPU-файлов с распечаткой типов объектов и методов, определенных в интерфейсном разделе модуля. Пользователи такого модуля могут, используя полиморфизм и наследование, добавлять к модулю новые свойства. Таким образом, программа наследует все, что было в исходном модуле, и создает на основе этого новые объекты.
- 295 -