Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МОДУЛИ new.doc
Скачиваний:
8
Добавлен:
14.09.2019
Размер:
72.7 Кб
Скачать

МОДУЛИ

Стандартный Паскаль не предусматривает механизмов раздельной компиляции частей программы с последующей их сборкой перед выполнением. Более того, принцип обязательного описания любого объекта перед его использованием делает фактически невозможной разработку разнообразных библиотек прикладных программ.

Turbo Pascal включает в себя средства, повышающие его модульность. Чаще всего таким средством является разрешение использовать внешние процедуры и функции, тело которых заменяется стандартной директивой External. Turbo Pascal включает стандартные модули, содержащие описания типов, констант, переменных, процедур и функций, которые называются стандартными. Помимо стандартных модулей в Turbo Pascal’e программист может сам создать собственный модуль – модуль пользователя. При этом он помещает в него нужные для работы типы, константы, переменные, процедуры и функции, а затем использует этот модуль в своей основной программе.

Разработчики Object Pascal пошли в этом направлении еще дальше, включив в язык механизм модулей, связанных с каждым включаемым в программу окном. Наличие модулей в Object Pascal и Delphi позволяет программировать и отлаживать программу по частям, создавать библиотеки подпрограмм и данных, воспользоваться возможностями стандартных модулей, практически неограниченно увеличивать кодовую (содержащую коды команд) часть программы.

Модуль – это автономно компилируемая программная единица, включающая в себя различные компоненты интерфейсного раздела (типы, константы, переменные, процедуры и функции) и, возможно, некоторые исполняемые операторы инициирующего раздела.

В модуле явным образом выделяется некоторая «видимая» интерфейсная часть, в которой сконцентрированы описания глобальных типов, констант и переменных, а также приводятся заголовки глобальных процедур и функций. Появление объектов в интерфейсной части делает их доступными для других модулей и основной программы. Тела процедур и функций располагаются в исполняемой части модуля, которая может быть скрыта от пользователя.

Роль модулей в Delphi не исчерпывается только механизмом раздельной компиляции. Delphi связывает с каждым включаемым в программу окном (формой) собственный модуль и таким способом локализует все свойства окна в отдельной программной единице.

В Object Pascal можно создавать модули пользователя, которые будут использоваться в консольном режиме.

Структура модуля

Модуль имеет следующую структуру:

Unit <имя>;

Interface

<интерфейсная часть>

Implementation

<выполняемая часть>

Initialization

<блок инициирования>

Finalization

<блок завершения>

end.

Здесь Unit – зарезервированное слово (единица), начинает заголовок модуля; <имя> - имя модуля (правильный идентификатор).

Разделение модуля на секции обеспечивает удобный механизм обмена алгоритмами между отдельными частями одной программы. Он также реализует средство обмена программными разработками между отдельными программистами. Получив откомпилированный “посторонний” модуль, программист получает доступ только к его интерфейсной части, в которой содержатся только объявления элементов. Детали реализации объявленных процедур, функций, классов скрыты в секции Implementation и недоступны другим модулям.

Секции интерфейсная и исполняемая являются обязательными. Блоки инициализации и завершения могут отсутствовать. Обязательна также указанная последовательность разделов.

Таким образом, модуль состоит из заголовка и четырех составных частей. Рассмотрим их подробнее.

Заголовок модуля и связь модулей друг с другом

Заголовок модуля состоит из зарезервированного слова unit и имени модуля. Имя модуля должно быть уникальным. Для правильной работы среды Delphi это имя должно совпадать с именем дискового файла, в который помещается текст модуля.

Например, если модуль имеет заголовок:

Unit Cmplx;

то этот модуль должен размещаться в дисковом файле Cmplx.pas. Имя модуля служит для его связи с другими модулями и основной программой. Эта связь устанавливается специальным предложением

Uses <список модулей> ;

Предложение Uses открывает раздел описаний основной программы.

Здесь Uses - зарезервированное слово (использует);

<список модулей> - список модулей, с которыми устанавливается связь; Например:

Program Primer_UseUnit;

Uses SysUtils, Cmplx;

Модули могут использовать другие модули. Предложение Uses в модулях может следовать либо сразу за зарезервированным словом Interface, либо сразу за словом Implementation, либо и там, и там (т.е. допускаются два предложения Uses).

Интерфейсная часть

Через интерфейс осуществляется взаимодействие основной программы с модулем (или модуля с модулем).

Интерфейсная часть открывается зарезервированным словом interface. Далее может следовать предложение uses, где указываются имена модулей, которые используются данным модулем. В интерфейсной части содержатся объявления всех глобальных элементов модуля (типов, констант, переменных и подпрограмм), которые должны стать доступными основной программе и другим модулям. При объявлении глобальных подпрограмм (функций и процедур) в интерфейсной части указывается только их заголовок, например:

Unit Cmplx;

Interface

tуре

complex = record

re, im: real

end;

Function AddC(x,y: Complex): Complex; {только заголовки}

Function MulC(x,y: Complex): Complex;

Если теперь в основной программе написать предложение

Uses Cmplx;

то в программе станут доступными тип complex и две функции - AddC и MulC из модуля Cmplx.