11.4 правила сопоставления параметров настройкиДля формальных и фактических параметров настройки пакетов при конкретизации действуют следующие правила: 1. Формальные объекты. Типы фактических параметров настройки должны соответствовать типу формального параметра настройки и всем наложенным ограничениям. 2. Формальные личные (приватные) типы. Формальный личный тип сопоставляется с любым фактическим типом. При этом, если формальный личный тип: • является лимитируемым личным (limited private), то ему может быть сопоставлен любой тип, включая заданный тип; • не является лимитируемым личным типом, то ему может быть сопос тавлен любой фактический тип, над которым определены опера ции равенства, неравенства и присваивания; • имеет дискриминант, то он должен согласовываться с дискрими нантом фактического типа. 3. Формальные скалярные типы. Формальному скалярному типу, специфицированному как: • (о),сопоставляется любой дискретный тип; • range о, сопоставляется любой целый тип; • digits о, сопоставляется любой тип с плавающей запятой; • delta о, сопоставляется любой тип с фиксированной точкой. 4. Формальные индексируемые типы. Тип фактического параметра должен иметь столько индексов, сколько и настраиваемый формальный тип. Если либо формальный индексируемый тип, либо соответствующий фактический параметр является неограниченным, то и другой тип должен быть неограниченным. 5 .Формальные ссылочные типы. Если тип объекта в формальном ссылочном типе является настраиваемым, то он замещается соответствующим фактическим параметром. После выполнения подстановки формальный ссылочный тип и фактический ссылочный тип должны иметь одинаковые типы объектов. 6 .Формальные подпрограммы. Если существует несколько типов настройки в формальной подпрограмме настройки, то они прежде всего замещаются соответствующими фактическими параметрами. После замещения подпрограммы должны быть такими, чтобы их соответствующие параметры имели одинаковые тип, вид и ограничение. Для функции дополнительно типы результата и ограничения на них должны быть одинаковыми. 128 Ада 95. Введение в программирование Глава И. Настраиваемые модули 129
I 7. Формальные пакеты . Фактический пакет должен быть конкретизацией формального пакета. При конкретизации настраиваемого модуля с формальными пакетами они должны быть предварительно конкретизированы. Операция передаётся в качестве параметра настройки для формального параметра - функции. Аналогично можно передать функцию как фактический параметр настройки для формального параметра - операции. Ш СОВЕТЫ: * Используйте настраиваемые модули с формальными параметрами для достижения максимальной адаптируемости пакета * Используйте настраиваемые модули для инкапсуляции алгоритмов, независимых от типа данных. * Используйте настраиваемые модули во избежания дублирования кода. ИЗМЕНЕНИЯ: О Формальным параметром может быть формальный пакет. *О Фактические параметры могут быть конкритизированы в самом настраиваемом пакете. О Разрешены новые формы настраиваемых параметров. CJ Изменилась формальная нотация для формальных параметров пакета. |
| Оглавление| |