Модульное программирование является следующим шагом в повышении уровня абстракции программы. В этом случае подпрограммы и связанные с ними данные помещаются в отдельные файлы (модули). Модули транслируются отдельно и подключаются на этапе компоновки исполняемой программы.
Разбиение программы на модули позволяет:
- программировать и отлаживать программу по частям (в том числе и разными программистами);
- облегчить процесс отладки программы, скрывая несущественные детали за интерфейсом модуля;
- создавать собственные библиотеки подпрограмм и данных.
Любой модуль должен содержать данные и подпрограммы их обработки. Поэтому не рекомендуется ситуация, когда другие модули содержат средства обработки этих данных. Если такая обработка в других модулях необходима, то эти модули должны использовать подпрограммы обработки данных первого модуля.
Для того чтобы пользоваться модулем, необходимо знать только его интерфейс, а не детали его реализации. Это уменьшает объём информации, которую должен помнить программист при отладке программы. Скрытие деталей реализации называется инкапсуляцией.
Интерфейс модуля содержит описания констант, типов, переменных и полные заголовки подпрограмм, которые используются внешней средой (основной программой и другими модулями).
Исполнительная часть модуля содержит описание всех подпрограмм модуля.