Справочное руководство по языку Ада-83


Тела пакетов


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

пакет

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

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

Примечание.

Переменная, описанная в теле пакета, видима только внутри этого тела, и, следовательно, ее значение может быть изменено только внутри этого тела пакета. В отсутствие локальных задач значение такой переменной сохраняется неизменным между вызовами извне пакета подпрограмм, описанных в его видимом разделе. Свойства такой переменной аналогичны свойствам «собственной» переменной в языке Алгол-60.

Предвыполнение тела подпрограммы, описанной в видимом разделе пакета, осуществляется при предвыполнении тела пакета. Следовательно, при вызове такой подпрограммы извне программного модуля возбуждается исключение PROGRAM-ERROR, если вызов производится до предвыполнения тела пакета (см. 3.9).

Пример пакета:

package RATIONAL-NUMBERS is

type RATIONAL is record

NUMERATOR : INTEGER; DENOMINATOR : POSITIVE; end record;

function EQUAL (X,Y RATIONAL) return BOOLEAN;

function "/" (X,Y INTEGER) return RATIONAL; —- для образования рационального числа

function "+" (X,Y RATIONAL) return RATIONAL; function "-" (X,Y RATIONAL) return RATIONAL; function "*" (X,Y RATIONAL) return RATIONAL; function "/" (X,Y RATIONAL) return RATIONAL;

end;

package body RATIONAL-NUMBERS is

procedure SAME-DENOMINATOR (X,Y : in out RATIONAL) is begin




Начало  Назад  Вперед