Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Зачем нужны модули и какие есть средства, аналогтчные (в какой-то мере) модулям
Следует заметить, что строить большие программы по модульному принципу можно и без использования модулей. Для этого есть, по крайней мере, следующие возможности: - разбить исходный текст программы (на Паскале) на части и хранить каждую часть в отдельном файле; к основной части можно программе подключать с помощью директивы {$I имя_файла} Естественно, что компилироваться таким образом собранные программы будут значительно медленнее, чем неразделенные; можно указывать путь - использовать так называемые оверлеи (overlay); при этом программа состоит из резидентной части(постоянно находящейся в памяти) и набора транзитных (замещающих друг друга в памяти) частей; все части программы при этом должны быть специальным образом оформлены и наименьшей оверлейной единицей является модуль; для организации таких программ имеется специальный стандартный модуль OVERLAY, который в данном случае д.б. обязательно подключен; естественно, что выполняться оверлейная программа будет значительно медленнее, чем неоверлейная, за счет времени подкачки в память транзитных частей; library имя; ...; end. - использовать динамически связываемые библиотеки - DLL (Dynamically Linked Libraries); такая возможность есть только при работе в защищенном режиме DOS или под MS Windows; структура DLL похожа на структуры программы, но вместо слова program используется слово library; при компиляции такой структурной единицы получается файл с расширением.dll; особенностью использования DLL является то, что: 20.3 Структура модуля (секции) Структура модуля аналогична структуре программы, однако есть несколько существенных различий. В общем случае можно выделить три группы объектов, из которых состоит модуль: 1) объекты предназначенные для использования в других модулях и программах (видимые в других модулях); 2) объекты, которые должны быть видимыми только в данном модуле; 3) действия, которые надо выполнить для инициализации переменных, используемых в модуле, и данные, которые надо инициализировать (в самом начале работы). Поэтому модуль обычно имеет следующую структуру: модуль должен быть помещён в файл, имя которого совпадает с именем модуля (с расширением *.pas) unit < имя модуля/идентификатор>; {заголовок модуля (обязателен)}
В частном случае модуль может не содержать все три части, тогда это будет пустой модуль: unit < имя модуля>; {заголовок модуля} interface implementation end. Интерфейсная секция Все, что здесь перечисляется (константы, типы, переменные, заголовки процедур и функций), будет видимо из программы и модулей, использующих данный модуль. Другими словами, здесь описывается интерфейс (стыковочные узлы) данного модуля с другими модулями и программами. NB: В этой секции обычно приводятся только заголовки подпрограмм. Их полное описание обычно помещают в секцию реализации. Секция реализации Описанные в интерфейсной секции обычные процедуры и функции, должны описываться полностью (заголовок + описания + вложенные процедуры и функции + тело) в секции реализации. Заголовок procedure/function должен быть или идентичным тому, который указан в секции интерфейса, или иметь краткую форму (без списка формальных параметров и круглых скобок). Только здесь описываются те процедуры и функции, которые надо скрыть от использования сторонними модулями, при этом заголовки этих процедур и функций не задаются в секции интерфейса. Обычно так поступают с теми процедурами и функциями, которые предназначены для работы самого модуля. Подпрограммы, локальные для секции реализации (то есть не описанные в секции интерфейса), должны иметь полный (несокращенный) заголовок. Таким образом, кроме процедур и функций (заголовки которых приведены в интерфейсной секции) в секции реализации также описываются константы, переменные, процедуры и функции, являющиеся глобальными/видимыми по отношению к подпрограммам секции реализации, но являющиеся одновременно локальными, то есть недоступными (невидимыми) для основной программы и других модулей. Секция инициализации Обычно вся секция реализации модуля заключена между зарезервированными словами implementation и end. Однако, если перед end поместить зарезервированное слово begin, а между ними - операторы, то получившийся составной оператор, очень похожий на основное тело программы, становится секцией инициализации модуля (initialization). Секция инициализации представляет собой место, где инициализируются структуры данных (переменные), которые использует модуль или которые он делает доступными программе, использующей данный модуль. Можно, например, использовать эту секцию для открытия файлов, которые программа будет использовать позднее, или для инициализации указателей. При выполнении программы, использующей некоторый модуль, секция инициализации этого модуля вызывается перед запуском основного тела программы. Если программа использует более одного модуля, то секции инициализации всех модулей вызываются (в порядке, в котором модули указаны в операторе uses в программе) перед тем, как выполнить основное тело программы. Популярное:
|
Последнее изменение этой страницы: 2016-07-12; Просмотров: 693; Нарушение авторского права страницы