Введение в программирование - Учебное пособие (Корочкин А. В.)

8.4 тело пакета

Тело пакета   обеспечивает реализацию   ресурсов пакета, перечис­ленных в его спецификации:

PACKAGE   BODY       Имя_Пакета      IS

- -   Локальные_Описания [ BEGIN

- - Последовательность_Операторов [ EXCEPTION

- - Оработчики_Исключений ] ] END   Имя_Пакета;

Локальные_Ошсания  в теле пакета предназначены для  реализации ресурсов, перечисленных в спецификации пакета, а также для описания локальных ресурсов, необходимых для их  реализации. Локальные описания в теле пакета являются  невидимыми и недоступными вне пакета.

Последователъность_Операторов   в теле выполняется только при предвыполнении пакета. Как правило, предвыполнения тела пакета свя­заны с инициализацией объектов, описанных в спецификации.

Обработчики_Исключений предназначены для обработки исключе­ний, возникающих при выполнении операций в теле пакета. Если обра­ботчик отсутствует в теле пакета, то исключение   распространяется на часть программы, где находится пакет.

П Пример тела пакета выше

Data , спецификация которого описана

package     body   DATA  is

VA, VB :   Vector; - -   локальные   переменные и тип sybtype   Short_Vector is Vector ( 1 . .   10 ) ;

procedure   Sum_Vec (А, В : in   Vector;

С : out Vector) is begin

for i in 1 .. n    loop

C(i):= A(i) +   B(i); end   loop; end   Sum_Vec;

procedure  Clean_Vec ( Z:   in   out    Vector)  is - - локаль- begin      - - ная процедура for j   in 1 .. N    loop

Z(j): = 0; end   loop; end  Clean_Vector ;

begin   - - операторная    часть тела пакета

Clean (VA);  - - инициализация    локальных   переменных Clean (VB );

end    DATA;

ffl   СОВЕТЫ:

*   Используйте пакеты для обьединения логически связанных типов и объектов.

*   Используйте пакеты для сокрытия информации.

*   Используйте пакеты с тэговыми и приватными типами для абст­рактных типов данных.

*  Используйте спецификатор   renames вместо спецификатора use для пакетов.

*  Для обеспечения видимости операторов используйте спецификатор use type вместо renames.

*   Минимизируйте использование спецификатора   use .

79

Глава 8. Пакеты

Ада 95. Введение в программирование

78