Модули
Lazarus IDE: Основы программирования в Windows
Несмотря на то, что всё потихоньку уходит в сеть, программирование для настольных компьютеров остаётся востребованным. И будет таковым ещё долго. Ну а самая распространённая операционная система для настольных компьютеров – это по-прежнему Windows. Поэтому любой программист, даже если он собирается стать веб-разработчиком, должен знать хотя бы основы создания программ для Windows. Подробнее... |
Модули мы уже упоминали в разделе о стандартных подпрограммах. Пришло время рассказать об этом более подробно.
Модуль - это блок исходного кода, который может включать в себя описания типов, констант, переменных, подпрограмм и т.п. Модуль может компилироваться отдельно от программы. Однако, в отличие от библиотек, модуль должен быть написан на том же языке, что и основная программа.
Зачем нужны модули?
Есть две основные причины:
- Разбиение сложной и большой программы на несколько более простых частей
- Создание библиотеки подпрограмм, типов, констант и т.п., с целью её распространения или использования в других своих программах
Если получилось не очень понятно, то постараюсь объяснить “на пальцах”.
Итак, причина первая.
Допустим, вы создаёте очень сложную программу, которая будет содержать тысячи или десятки тысяч строк исходного кода. Представили? А теперь представьте, как вы её будете создавать, если весь исходный код у вас будет в одном файле. Нравится перспектива? Только прокрутка такого файла в редакторе исходного кода любого выведет из себя. Я уж не говорю о поиске нужной информации с целью её редактирования.
Понятно, что более удобно разбить программу на несколько файлов, каждый из которых будет содержать исходный код, выполняющий операции, сгруппированные по каким-либо признакам. Например, в один файл сгруппировать математические функции, в другой - функции для работы с интерфейсом программы и т.п.
Вот эти отдельные файлы и будут являться модулями одной программы.
Теперь причина вторая.
Допустим, вы очень часто используете в своих программах специфические математические функции, которых нет в стандартных модулях языка. В этом случае имеет смысл создать ваш собственный модуль, описать там все ваши функции и откомпилировать его. Тогда вы сможете использовать функции вашего модуля в других своих программах. То есть вам не придётся в каждой программе прописывать одни и те же функции. Вы просто подключите к своей программе ваш модуль - и всё.
Кроме того, вы сможете распространять ваш модуль, если вдруг окажется, что этими функциями не прочь воспользоваться другие программисты. И, чем чёрт не шутит, быть может вам даже удастся ваш модуль продавать, если он окажется настолько полезным.
А теперь поговорим о структуре модуля в Паскале. Выглядит она так:
unit ИмяМодуля; //Заголовок модуля interface //Интерфейсный раздел //Здесь находится объявление (описание) //глобальных элементов модуля //(видимых из других модулей и программ) uses //Раздел подключения других модулей ИменаДругихМодулей; implementation //Раздел реализации модуля //Объявление локальных элементов модуля //(невидимых из других модулей и программ) begin //Раздел инициализации //Исходный код, который выполняется при загрузке модуля end.
Итак, за ключевым словом unit следует имя модуля, которое является идентификатором, составленным в соответствии с правилами языка программирования.
Далее следует интерфейсный раздел. В этом разделе объявляются все глобальные константы, переменные, типы данных, подпрограммы и т.п. Все объявленные здесь элементы будут видны из других программ и модулей.
К модулю, также как и к программе, можно подключить другие модули. И делается это точно также - с помощью ключевого слова uses. Затем следуют имена подключаемых модулей, разделённые запятой. После имени последнего модуля ставится точка с запятой.
В разделе реализации модуля объявляются данные, которые не будут видны из других программ и модулей. То есть эти данные используются только внутри данного модуля.
И, наконец, раздел инициализации, который заключён в операторные скобки begin и end. Здесь можно, например, присвоить начальные значения глобальным переменных, то есть выполнить инициализацию.
Исходный код в разделе инициализации может отсутствовать, однако слова begin и end обязательны.