Понятие модульного программирования возникло при создании программ большого объема, их увеличивающейся внутренней сложности и коллективном характере разработок. Сейчас понятие модуля включает независимо компилируемые и тестируемые программные единицы со строго определенными интерфейсами, которые могут определяться в различных сочетаниях.
Паскаль является алголоподобным языком, а в таких языках отсутствует модульность. В стандартном Паскале даже нет возможности отдельно транслировать и тестировать подпрограммы. В Турбо Паскале с введением понятия «модуль» стал возможным современный стиль реализации программных пакетов, легко подключаемых к любой программе, а так же ослабли ограничения на суммарный объем готовых программ.
В отличие от подпрограммы модуль считается отдельной программой, то есть представляет собой отдельно хранимую и независимо компилируемую программную единицу.
Модуль – это совокупность или коллекция программных ресурсов, предназначенных для использования другими программами или модулями. Ресурсы – это любые программные объекты Паскаля, – константы, переменные, типы, подпрограммы.
Основное отличие модуля от программы заключается в том, что его объекты только используются другими программами, но сам модуль выполнить нельзя.
Все программные ресурсы модуля делятся на две части:
1). Интерфейс. Здесь находятся видимые объекты, то есть те, которые можно использовать в других программах, и предназначенные именно для этих целей.
2). Реализация. Сюда помещают рабочие объекты, называемые невидимыми или скрытыми. Например, если модуль содержит подпрограмму универсального применения, то вызываемые этой подпрограммой процедуры и функции, содержащиеся в модуле, и используемые ею переменные могут иметь чисто внутренний характер и не должны использоваться другими программами.
В разделе реализации так же может находиться секция инициализации, содержащая любые операторы. Они будут выполняться сразу после запуска программы до операторов основной программы. Используется обычно для установки различных начальных значений. Если в Турбо Паскале секция инициализации начиналась со слова Begin, то в Delphi 1.0 для этих целей введено новое служебное слово Initialization.
Начиная с Delphi 2.0, здесь может использоваться и секция завершения (finalization), в которой выполняются действия, противоположные секции инициализации. Например, закрытие файлов, восстановление векторов прерываний и другие.