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

14.5 примеры

П Пример 1 . Инкапсуляция задач и процедур.

package       DOMEN   is

procedure   Assa ( X:   in   integer;   W: in  float);

179

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

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

178

 

- - видимая процедура

- - скрытая процедура

Data

end     DOMEN ;

package body   DOMEN   is procedure   Road is

end Road;

 

Data;

type     Data   ; type   Page   is    access end      NAME ARRAY;

package body   NAME_ARRAY      is

type    Data     is        - - скрытая реализация типа record

task   Way    is      - - скрытая задача

entry Lion (Z : fixed ); end   Way;

procedure   Assa ( X:   in integer;  W : in float) is

begin      - тело видимой  процедуры

Road;     - - вызов скрытой процедуры Way. Lion (X );       - - вызов входа скрытой задачи end Assa; end     DOMEN;

В данном примере в спецификации пакета Domen описана проце­дура Assa, которая видна и доступна вне пакета пользователю пакета Domen. В теле пакета при реализации процедуры Assa испо­льзуются процедура Road и задача Way . Они описаны только в теле, поэтому они не видны и недоступны непосредственно пользо­вателю вне пакета. То есть выполнен сокрытие процедуры Road и задачи Way. Их выполнение осуществляется при вызове подпро­граммы Assa , так как в теле подпрограммы Assa есть вызов про­цедуры Road и обращение к входу Lion задачи Way.

D Пример 2.   Сокрытие деталей реализации типа

package    NAME _ARRAY     is

type   Page    is     limited     private;

procedure    Viev ( Name : in out  Page); private   - - невидимая  часть  описания пакета

X:     Page; end     Data;

Book_1 ,    Book_2 :    Page;

procedure   Viev (Name:  in   out   Page)   is    separate; end       NAME_ARRAY;

В данном примере реализация типа Page выполненена через ссылку на тип Data , описание которого выполнено в теле пакета Name_Array . Тем самым осуществлено сокрытие деталей реализации типа Page вне пакета.

D Пример 3.    Использование дочернего пакета. package   PARK  is

Dino)      return     Dino ;

Dino)      return     Dino;

Dino)      return     Integer ;

type   Dino     is private ; function  Alex   (X. Y function   Bob    (X, function   Suzen ( X, Y

private

end    PARK;

package      body   PARK   is

end   Alex; function   Bob    (X

function   Alex(X, Y :   Dino)    return        Dino     is

: Dino)    return        Dino     is

94»

 

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

180

end    Bob;

function    Suzen ( X, Y : Dino )   return   Integer    is

end     Suzen;

procedure    Port (A : in Dino : В : out Dino )        is - - внутрення ( скрытая )   подпрограмма

end   Port; end   PARK; package    PARK. JURASSIC     is    - -   дочерний   пакет

procedure Adventure (X: in out    Dino); end     PARK. JURASSIC ; package body  PARK. JURASSIC   is

procedure   Adventure(X : in out Dino)   is

...      - -    видна приватная часть пакета PARK end    Adventure;

end   PARK . JURASSIC ;

 

181

Глава 15. Ввод-вывод