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


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

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

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

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

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

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

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

1) код и данные DLL не прикомпоновываются статически к программе, а существуют отдельно (соответственно файл программы не увеличивается); 2) если программа вызывает процедуры и функции из DLL, то DLL связываются с программой (прилинковываются) динамически в оперативной памяти (по мере вызова подпрограмм); 3) в отличие от модулей DLL могут экспортировать лишь процедуры и функции (модули могут экспортировать и данные и код).
20.3 Структура модуля (секции)

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

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

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

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

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

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

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

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

interface { Секция интерфейса (обязательна)} uses <список импортируемых (подключаемых) модулей>;
const ............; { Описание } type ..............; { видимых/глобальных } var ................; { элементов модуля } procedure .....; { } function .......; { }  

только заголовки  
implementation { Секция реализации (обязательна)} uses <список импортируемых (подключаемых) модулей>
label ... ; { Описание } const .. ; { внутреннних (невидимых для других модулей) } type . ; { элементов модуля, а так же описание (реализация) } var .... ; { всех тех процедур и функций, для которых } procedure .....; { в интерфейсной части были приведены только заголовки } function .......; { }  

 
Если отсутствует секция инициализации, то должно быть пропущено слово begin и действия по инициализации
Begin {Секция инициализации модуля (не обязательна)}

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

end .

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

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

interface

implementation

end .



Дата добавления: 2016-05-28; просмотров: 1481;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.009 сек.