Глава 12
МОДУЛИ
Стандартный Паскаль не предусматривает
механизмов раздельной компиляции частей программы с последующей их сборкой перед
выполнением. Более того, последовательное проведение в жизнь принципа обязательного
описания любого объекта перед его использованием делает фактически невозможной
разработку разнообразных библиотек прикладных программ. Точнее, такие библиотеки
в рамках стандартного Паскаля могут существовать только в виде исходных текстов,
и программист должен сам включать в программу подчас весьма обширные тексты
различных поддерживающих процедур, таких как процедуры матричной алгебры, численного
интегрирования, математической статистики и т. п.
Вполне понятно поэтому стремление
разработчиков коммерческих компиляторов Паскаля включать в язык средства, повышающие
его модульность. Чаще всего таким средством является разрешение использовать
внешние процедуры и функции, тело которых заменяется стандартной директивой
External. Разработчики Object Pascal пошли в этом направлении еще дальше, включив
в язык механизм так называемых модулей.
Модуль -
это автономно компилируемая
программная единица, включающая в себя различные компоненты интерфейсного раздела
(типы, константы, переменные, процедуры и функции) и, возможно, некоторые исполняемые
операторы инициирующего раздела. Появление объектов в интерфейсной части делает
их доступными для других модулей и основной программы. Тела процедур и функций
располагаются в исполняемой части модуля, которая может быть скрыта от пользователя.
Роль модулей в Delphi не исчерпывается
только механизмом раздельной компиляции. Delphi связывает с каждым включаемым
в программу окном собственный модуль и таким способом локализует все свойства
окна в отдельной программной единице. Как мы уже выяснили (см. п. 5.2), основная
программа (файл проекта dpr) весьма специфична: она содержит перечень всех используемых
в программе модулей и несколько
исполняемых
операторов, обеспечивающих создание нужных окон и связь программы с Windows.
Вся
основная работа программы
управляется кодом, содержащимся в модулях.