11.1 спецификация настройки и телаСпецификация настройки настраиваемого модуля имеет следующую форму: GENERIC Формальные_Параметры_Настройки Спецификация_Пакета_Или_Подпрограммы. Параметры настройки во многом аналогичны формальным параметрам подпрограмм. В качестве Формального_Парамет-ра_Настройки можно использовать: • формальный обьект; • формальный тип ; • формальный модуль. Формальный модуль настройки - это формальная подпрограмма или формальный пакет Часть спецификации настройки, влючающая ключевое слово generic и список формальных параметров настройки называется формальной частью настройки. Настраиваемые модули могут не иметь параметров настройки. В этом случае они используются для создания идентичных модулей. П Примеры формальной части настройки : generic - - без параметров generic N : integer; - - формальный обьект generic - - формальный обьект, со значением Size : positive : = 66 ; - - по умолчанию generic type Post is ( < > ); - - формальные типы type Port is private; generic - - формальная функция with function Read ( Elem : float) return float; generic - - формальная процедура with procedure Cooler ( Power: in Data ; Volt: out fixed ) generic - - формальный пакет with package Nord is new West(.<>); 16 — Корочкин А. В. 118 Ада 95. Введение в программирование Глава 11. Настраиваемые модули 119
Формальные параметры видны вне настраиваемого модуля и используются при его настройке. Кроме того, они используются при описании обычной спецификации настраиваемого модуля и в его теле. П Пример спецификации настраиваемой процедуры Sort : generic N : integer ; - - формальная часть настраиваемой type Data is private; - - процедуры Sort with function Max (А, В: Data) return Data; procedure Sort (X : in out Data); - - спецификация Настраиваемая процедура Sort имеет три параметра настройки: обь-ект N, тип Оата и функцию Мах. П Пример спецификации настраиваемого пакета REZ: generic type Elem is range <>; - - формальная часть with procedure Sum (А, В : in Elem ; С : out Elem ); package REZ is - - спецификация, пакета REZ procedure Beta (X : in Elem); REZ_Error: exception; end REZ; Тело настраивамого модуля является телом либо пакета, либо подпрограммы и реализует ресурсы, описанные в спецификации. При этом в теле используются формальные параметры настройки данного модуля. Тело настраиваемого модуля является шаблоном для настройки. Синтаксически настраиваемое тело идентично телу ненастраиваемого модуля. Sort , спецификация на- П Пример тела настраиваемой процедуры стройки которой описана выше: procedure Sort (X : in out Data) is Temp: Data; begin for i in 1 .. N loop for j in 1 .. N loop Temp(i):= Max ( Х( i), X(j)); end loop; end loop; X: = Temp ; end Sort; Здесь при реализации тела процедуры используются формальные параметры настройки : тип Data, обьект N, функция Мах . |
| Оглавление| |