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