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

14.3 спецификаторы использования

Спецификаторы использования обеспечивают прямую видимость определенных ресурсов в заданных частях программы. Различают два вида спецификатора использования:

•   спецификатор  использования пакета;

•   спецификатор использования типа. Спецификатор использования пакета:

USE      Имя_Пакета    {, Имя_пакета } ;

Обеспечивает   прямую видимость всех ресурсов из видимой части спецификации всех перечисленных пакетов. Спецификатор использования типа:

USE    TYPE     Имя_Подтипа   {, Имя_Подтипа } ;

Обеспечивает прямую видимость примитивных операций для пере­численных в нем типов.

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

Для спецификатора использования внутри спецификатора кон­текста With область действия описания или переименования библи­отечного модуля - полная область определения данного описания. Для спецификатора использования внутри спецификатора контекста тела библиотечного модуля область действия - все тело и любые со­ответствующие субмодули.

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

174

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

Глава 14.  Правила видимости

175

 

 

использования в приватной части не включает видимую часть любого потомка этого библиотечного модуля.

Для каждого типа Т или T'Class, определенных в специфика­торе Use , каждая примитивная операция типа Т потенциально видна в этом месте, если ее определение видно в этом месте.

D Пример.

with Т; use   Т;    - -    библиотечный пакет   Т;

- -    его ресурсы видны     в пакете А package A  is

А1 , А2, A3 : integer;

end A;

procedure   Buster  is package   В  is

B1, B2 : integer;

A3       : integer; end    В;

procedure    ZZ   is

A2, Z1.Z2:     integer;

use   A;

use   В; begin

- - Al   означает A . Al

- -A2  означает ZZ.A2

- - A3   означает А.A3

- - Bl   означает В . Bl

- - B2  означает  В . B2

- - Z1   означает   ZZ . Zl

- - Z2   означает   ZZ . Z2 end      ZZ;

end Buster;

Процедура ZZ    является вложенной    в процедуру Buster, которая использует библиотечный пакет Т и содержит вложенный пакет В.

Ш  СОВЕТЫ

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

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

*  Минимизируйте области , к которым применяется спецификатор With.

*  Указывайте в спецификаторе" With только те модули, которые действительно необходимы.