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

11.4 правила сопоставления параметров настройки

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

1.  Формальные объекты. Типы фактических параметров настройки должны соответствовать типу формального параметра настройки и всем наложенным ограничениям.

2.  Формальные личные (приватные) типы. Формальный личный тип сопоставляется с любым фактическим типом. При этом, если фор­мальный личный тип:

•   является лимитируемым личным (limited private), то ему может быть сопоставлен любой тип, включая заданный тип;

•   не является лимитируемым личным типом, то ему может быть сопос тавлен любой фактический тип, над которым определены опера ции равенства, неравенства и присваивания;

•   имеет дискриминант, то он должен согласовываться с дискрими нантом фактического типа.

3.  Формальные скалярные типы. Формальному скалярному типу, спе­цифицированному как:

•   (о),сопоставляется любой дискретный тип;

•  range о, сопоставляется любой целый тип;

•  digits о, сопоставляется любой тип с плавающей запятой;

•  delta о, сопоставляется любой тип с фиксированной точкой.

4. Формальные индексируемые типы. Тип фактического параметра дол­жен иметь столько индексов, сколько и настраиваемый формальный тип. Если либо формальный индексируемый тип, либо соответствую­щий фактический параметр является неограниченным, то и другой тип должен быть неограниченным.

5 .Формальные ссылочные типы. Если тип объекта в формальном ссы­лочном типе является настраиваемым, то он замещается соответствую­щим фактическим параметром. После выполнения подстановки фор­мальный ссылочный тип и фактический ссылочный тип должны иметь одинаковые типы объектов.

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

128

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

Глава И. Настраиваемые модули

129

 

I

7. Формальные пакеты . Фактический пакет должен быть конкретиза­цией формального пакета. При конкретизации настраиваемого модуля с формальными пакетами они должны быть предварительно конкрети­зированы.

Операция передаётся в качестве параметра настройки для формаль­ного параметра - функции. Аналогично можно передать функцию как фактический параметр настройки для формального параметра - опера­ции.

Ш       СОВЕТЫ:

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

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

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

ИЗМЕНЕНИЯ:

О Формальным параметром может быть формальный пакет.

*О Фактические параметры могут быть конкритизированы в самом настраиваемом пакете.

О Разрешены новые формы настраиваемых параметров. CJ Изменилась формальная нотация для формальных параметров па­кета.