Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1_SAOD_-_Dinamicheskie_peremennye_OOP.doc
Скачиваний:
9
Добавлен:
21.03.2016
Размер:
1.06 Mб
Скачать

Тема 2. Модули

  1. Назначение модулей

Наличие модулей в Delphiпозволяет:

1) создавать библиотеки программных элементов – подпрограмм, констант, типов и переменных;

2) практически неограниченно увеличивать кодовую часть программы;

3) использовать подпрограммы, константы, типы и переменные, содержащиеся в стандартных модулях (поставляемых в составе системы программирования Delphi) и в модулях других программистов;

4) программировать и отлаживать программу по частям.

Модуль состоит из следующих частей:

  • заголовок модуля;

  • секция интерфейса;

  • секция реализации;

  • секция инициализации;

  • секция деинициализации.

Первые три части являются обязательными. Обязательна также указанная последовательность разделов.

  1. Заголовок модуля

Заголовок модуля состоит из зарезервированного слова unit и идентификатора. Идентификатор модуля должен быть уникальным. Пример заголовка:

unit MyModule;

Модуль должен быть помещен в файл, имя которого совпадает с именем модуля, а его расширение должно быть .pas. После компиляции файл с модулем получает расширение .dcu.

  1. Секция интерфейса

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

Секция начинается зарезервированным словом interface. Далее могут размещаться: 1) предложение uses, в котором перечисляются имена модулей, используемых данным модулем; 2) раздел описания констант; 3) раздел описания типов; 4) раздел описания переменных; 5) раздел описания процедур и функций. Порядок следования разделов описаний так же, как и в главной программе, может быть произвольным. Возможно повторение разделов. Требуется только одно: используемое сейчас должно быть описано выше. Любой из подразделов может отсутствовать. Допустима даже пустая секция интерфейса, но модуль с такой секцией никому не нужен.

В разделе объявления процедур и функций указываются лишь заголовки подпрограмм. Сами подпрограммы (их блоки) размещаются в секции реализации.

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

  1. Секция реализации модуля

Назначение секции реализации – реализация подпрограмм, заявленных в секции интерфейса.

Секция начинается зарезервированным словом implementation. Далее могут размещаться: 1) предложение uses, в котором перечисляются имена модулей, используемых данным модулем, но не упомянутые в предложении секции uses интерфейса; 2) раздел описания меток; 3) раздел описания констант; 4) раздел описания типов; 5) раздел описания переменных; 6) раздел описания процедур и функций.

Структурно секция реализации отличается от секции интерфейса только тем, что разрешено наличие раздела описаний меток.

Как и в секции интерфейса: 1) порядок следования разделов описаний может быть произвольным; 2) возможны повторения разделов; 3) действует правило: используемое сейчас должно быть описано выше; 4) любой из подразделов может отсутствовать; 5) допустима пустая секция реализации.

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

Раздел описания подпрограмм обязательно должен содержать описания подпрограмм, заявленных (описанных) в секции интерфейса. В описаниях этих подпрограмм допустимо использовать сокращенные заголовки без списков формальных параметров. Описания каждой подпрограмм обязательно содержит её блок (тело), состоящее из раздела описаний и раздела операторов.

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

Важно понимать, что все метки, константы, типы, переменные и подпрограммы, описанные в секции реализации, кроме подпрограмм из секции интерфейса, являются локальными элементами данного модуля, они не видны из других программ и модулей, они создаются только с одной целью – реализовать подпрограммы секции интерфейса!

  1. Секция инициализации

Секция инициализации – факультативная часть модуля. В ней размещаются операторы, которые выполняются в начале работы той программы, которая использует данный модуль. Если программа использует несколько модулей, то содержимое их секций инициализации выполняется в порядке перечисления имён модулей в предложении uses. Эта секция начинается зарезервированным словом initialization, например: