Язык:
Русский
English
unit (зарезервированное слово)
Модули - основа модульного программирования в Borland Pascal. Вы можете использовать модули для создания библиотек и для разделения больших программ на несколько логически связанных модулей.
Синтаксис
unit идентификатор; { Заголовок }
interface { Общие описания }
uses { Раздел uses }
const { Раздел constants }
type { Раздел types }
var { Раздел variables }
procedure { Описание процедур }
function { Описание функций }
implementation { Частные описания }
uses { Раздел uses }
label { Раздел label}
const { Раздел constants }
type { Раздел types }
var { Раздел variables }
procedure { Описание процедур }
function { Описание функций }
begin { Раздел инициализации }
Statement; { Операторы }
Statement;
end.
Вот части модуля:
■ Заголовок модуля
■ Интерфейсная часть
■ Часть реализации
■ Часть инициализации
Заголовок модуля
В заголовке модуля определяется имя модуля, которое вы будете использовать, при указании ссылки на данный модуль в разделе uses другой программы.
Интерфейсная часть
В интерфейсной части объявляются константы, типы, переменные, процедуры и функции, которые являются общими (доступными пользователям модуля).
Для процедур и функций здесь перечисляются только их заголовки. Тела процедур и функций находятся в части реализации.
Часть реализации
В части реализации находятся тела всех общих процедур и функций.
Кроме того, здесь объявляются константы, типы, переменные, процедуры и функции, которые являются частными и не доступны пользователям модуля.
Часть инициализации
Часть инициализации - завершающая часть модуля. Она состоит из:
■ Зарезервированного слова end (нет кода инициализации), или
■ операторной части, которая будет выполнена при запуске программы,
использующей данный модуль
Совет: если модулю требуется не только инициализация, но и финализация, то код финализации пишется в far процедуру, а в части инициализации эта процедура добавляется в цепочку ExitProc.
Ада
Интерфейсная часть (спецификация) и часть реализации (тело) находятся в разных файлах. Это позволяет компилятору точнее определять (по дате изменения), что перекомпилировать, а что - нет. Например, если с момента последней компиляции спецификация не изменилась, а изменилось тело, то тело перекомпилируется, а зависимые пакеты - нет (если, конечно, не было Inline или обобщённых процедур).
В свою очередь, спецификация состоит из открытой и закрытой (private) частей. В открытой части можно скрывать детали типов, значения констант. Например, если в открытой части написано:
type Cube is private;
то это значит, что пользователи пакета должны воспринимать Cube как некоторый тип значений. Можно объявлять переменные этого типа, можно присваивать (т. е. копировать) значения этого типа, можно проверять два значения на эквивалентность. Если же требуется объявить тип для ресурса (например, сокета или файла), то пишется limited private. Переменные этого типа нельзя копировать и сравнивать. Впрочем, сравнивать станет возможно, если явно определить function "=". В языке Ада хорошо продуманы механизмы сокрытия деталей реализации (инкапсуляция).
Пакеты в языке Ада могут образовывать иерархии.