Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Зачем нужны модули и какие есть средства, аналогтчные (в какой-то мере) модулям



Следует заметить, что строить большие программы по модульному принципу можно и без использования модулей. Для этого есть, по крайней мере, следующие возможности:

- разбить исходный текст программы (на Паскале) на части и хранить каждую часть в отдельном файле; к основной части можно программе подключать с помощью директивы

{$I имя_файла}

Естественно, что компилироваться таким образом собранные программы будут значительно медленнее, чем неразделенные;

можно указывать путь

- использовать так называемые оверлеи (overlay); при этом программа состоит из резидентной части(постоянно находящейся в памяти) и набора транзитных (замещающих друг друга в памяти) частей; все части программы при этом должны быть специальным образом оформлены и наименьшей оверлейной единицей является модуль; для организации таких программ имеется специальный стандартный модуль OVERLAY, который в данном случае д.б. обязательно подключен; естественно, что выполняться оверлейная программа будет значительно медленнее, чем неоверлейная, за счет времени подкачки в память транзитных частей; library имя; ...; end.

- использовать динамически связываемые библиотеки - DLL (Dynamically Linked Libraries); такая возможность есть только при работе в защищенном режиме DOS или под MS Windows; структура DLL похожа на структуры программы, но вместо слова program используется слово library; при компиляции такой структурной единицы получается файл с расширением.dll; особенностью использования DLL является то, что:

20.3 Структура модуля (секции)

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

В общем случае можно выделить три группы объектов, из которых состоит модуль:

1) объекты предназначенные для использования в других модулях и программах (видимые в других модулях);

2) объекты, которые должны быть видимыми только в данном модуле;

3) действия, которые надо выполнить для инициализации переменных, используемых в модуле, и данные, которые надо инициализировать (в самом начале работы).

Поэтому модуль обычно имеет следующую структуру:

модуль должен быть помещён в файл, имя которого совпадает с именем модуля (с расширением *.pas)

unit < имя модуля/идентификатор>; {заголовок модуля (обязателен)}

interface { Секция интерфейса (обязательна)} uses < список импортируемых (подключаемых) модулей>;
только заголовки  
implementation { Секция реализации (обязательна)} uses < список импортируемых (подключаемых) модулей>
 
Если отсутствует секция инициализации, то должно быть пропущено слово begin и действия по инициализации
Begin {Секция инициализации модуля (не обязательна)}

{ действия по инициализации элементов модуля}

end.

В частном случае модуль может не содержать все три части, тогда это будет пустой модуль:

unit < имя модуля>; {заголовок модуля}

interface

implementation

end.

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

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

NB: В этой секции обычно приводятся только заголовки подпрограмм. Их полное описание обычно помещают в секцию реализации.

Секция реализации

Описанные в интерфейсной секции обычные процедуры и функции, должны описываться полностью (заголовок + описания + вложенные процедуры и функции + тело) в секции реализации. Заголовок procedure/function должен быть или идентичным тому, который указан в секции интерфейса, или иметь краткую форму (без списка формальных параметров и круглых скобок).

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

Подпрограммы, локальные для секции реализации (то есть не описанные в секции интерфейса), должны иметь полный (несокращенный) заголовок.

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

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

Обычно вся секция реализации модуля заключена между зарезервированными словами implementation и end. Однако, если перед end поместить зарезервированное слово begin, а между ними - операторы, то получившийся составной оператор, очень похожий на основное тело программы, становится секцией инициализации модуля (initialization).

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

При выполнении программы, использующей некоторый модуль, секция инициализации этого модуля вызывается перед запуском основного тела программы. Если программа использует более одного модуля, то секции инициализации всех модулей вызываются (в порядке, в котором модули указаны в операторе uses в программе) перед тем, как выполнить основное тело программы.


Поделиться:



Популярное:

  1. A.7.2. Модули пульта управления машиниста
  2. I. Какие первичные факторы контролируют нервную активность, то есть количество импульсов, передаваемых эфферентными волокнами?
  3. Newsweek стремился учесть целый ряд факторов, в том числе историческое и культурное значение книги,
  4. А сейчас у Вас есть желание вернуться в эту область? Тогда это было всё гораздо сложнее технически: и монтаж, и сбор информации, и другие аспекты.
  5. А то, что есть, — это единственное подлинное имя Бога. Это не цель где-то еще; это всегда доступно, просто вы не доступны этому.
  6. Ассамблея была распущена, а Шарипутта понял, что это и был ответ. Есть вещи, которые невозможно высказать, но можно понять. Истина — одна из таких вещей.
  7. Блаженны изгнанные за Правду , ибо их есть
  8. Бог есть Любовь, а стало быть, и я — не что иное.
  9. Бог отдал — и отдает опять, каждое мгновение, — часть Себя Меньшему Переживанию незнания Себя, так, чтобы Оставшееся Я могло знать, Кто и Что Оно Есть На Самом Деле.
  10. Будда спросил: «У тебя есть кто-то на примете?»
  11. Бытовые повести: жанр, идеи, стиль. «Повесть о Горе-Злочастии», «Повесть о Фроле Скобееве», «Повесть о Савве Грудцыне».
  12. В данном порядке главного дифракционного максимума наибольший угол дифракции будет у света с большей длиной волны в вакууме, то есть красный свет будет дифрагировать сильнее, чем фиолетовый.


Последнее изменение этой страницы: 2016-07-12; Просмотров: 657; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.016 с.)
Главная | Случайная страница | Обратная связь