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. Ввод-вывод |
| Оглавление| |