Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Модули в Pascal и Delphi лекция.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
215.55 Кб
Скачать

Лекция. Модули

Модули

1 Введение

Понятие модуля или, в более общем случае, модульного про­граммирования, возникло на определенном этапе развития программирования и было обусловлено возрастающими объемами программ, их увеличиваю­щейся внутренней сложностью и коллективным характером разработок. К настоящему времени понятие модуля продела­ло значительную эволюцию от примитивного "разрубания" текста программы на произвольные части или создания биб­лиотек включаемых фрагментов до независимо хранимых и разрабатываемых, независимо компилируемых и тестируемых программных единиц со строго определенными интер­фейсами, которые могут объединяться в различных сочета­ниях.

При всех несомненных достоинствах алголоподобных языков, большинство из них имеет существенный недоста­ток - отсутствие модульности. Представление программной системы как единой языковой конструкции является препят­ствием для эффективной организации коллективных разра­боток сложных систем, затрудняет понимание и модифика­цию программ. Понятие подпрограмм лишь частично реша­ет проблему ввиду неявных и слабо контролируемых информационных зависимостей подпрограмм и их окружения.

Введение понятия модуля в Turbo Pascal (введено в 4-ой версии систе­мы) позволило превратить его в язык, пригодный для крупных разработок на современном уровне тех­нологии программирования. За счет введения модулей удалось ослабить огра­ничения на суммарный объем готовых программ.

2 Общая структура модуля

В языке Turbo Pascal модуль (unit) по определению считает­ся отдельной программой. Если подпрограмма является структурным элементом Pascal-программы и не мо­жет существовать вне ее, то модуль представляет собой от­дельно хранимую и независимо компилируемую единицу.

В самом общем виде модуль представляет собой набор программных ресурсов, предназначенных для использования другими модулями и программами. Под ресурсами в данном случае понимаются любые программные объекты языка Turbo Pascal - константы, типы, переменные, подпрограммы. Важно понимать, что модуль сам по себе не является выполняемой программой - его объекты ИСПОЛЬ­ЗУЮТСЯ другими программными единицами.

Все программные ресурсы модуля можно разбить на две части: объекты, прямо предназначенные для использования другими программами или модулями, и рабочие (внутренние) объекты. Например, если модуль содержит некоторую под­программу универсального назначения, пригодную для ис­пользования другими программами, то вызывае­мые этой подпрограммой процедуры и функции, содержа­щиеся в модуле, и используемые ею переменные относятся к внутренним. Поэтому модуль, кро­ме заголовка, имеет две основные части, называемые интер­фейсом (interface) и реализацией (implementation).

В интерфейсной части модуля сосредоточены описания объектов, доступных из других программ. Такие объекты называют видимыми вне модуля. В части реализации помеща­ются рабочие объекты, называемые также невидимыми или скрытыми, так как вне модуля они не доступны

Заголовок модуля составляется из служебного слова unit и следующего за ним идентификатора, являющегося именем модуля. Заголовок завершается символом ; (точка с запя­той). Интерфейсная часть начинается со служебного слова interface, за которым следует совокупность обычных опи­саний. Часть реализации начинается служебным словом implementation, за которым идут описания скрытых для внешних программ объек­тов. Завершает модуль, как и программу, служебное слово end и символ '.' (точка).

Кроме перечисленных частей, модуль может содержать так называемый раздел инициализации, предназначенный для установки начальных значений переменных модуля пе­ред его использованием. Этот раздел следует после раздела реализации, начинается со служебного слова begin и содер­жит последовательность операторов.

Таким образом, общая структура модуля может быть представлена следующей схемой:

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

unit Calendar;

interface

type

Days = (Mon,Tue,Wed,Thu,Fri,Sat,Sun);

WorkingDays = Mon..Fri;

Months = (Jan,Feb,Mar,Apr,May,June,July,Aug,Sept,Oct,Nov,Decem);

Summer = June..Aug;

Autumn = Sep..Nov;

Spring = Mar..May;

DayNo = 1..31;

YearNo = 1900..2000;

Date = record

Day : DayNo;

Month : Months;

Year : YearNo

end;

implementation

end.

Данный модуль, ввиду своей простоты, не содержит разделов реализации и инициализации.