14.4 описания переименованияОписания переименования (renaming declarations ) определяют новое имя для следующих понятий : обьект, подпрограмма, исключение, пакет, вход, настраиваемый модуль. Переименование может быть использовано для разрешения конфликтов по имени и для введения сокращений. Переименование не скрывает старое имя ( идентификатора или операции ). Новое имя и старое имя не обязательно видимы в одном и том же месте программы. Описание переименования обьекта: Новое_Имя_Обьекта : TYPE RENAMES Старое_Имя_Обьекта; Описание переименования подпрограммы: Спецификацш_Новой_Подпрограммы : RENAMES Старое_Имя_Подпрограммы; Описание переименования исключения: Новое_Имя_Исключения : EXCEPTION RENAMES Старое_Имя_Исключения; Описание переименования пакета: PACKAGE Новое Имя RENAMES Старое_Имя_Пакета; 177 Глава 14. Правила видимости Ада 95. Введение в программирование 176
Описание переименования настройки: RENAMES; Пакета : GENERIC PACKAGE Старое_Имя Пакета RENAMES ; Процедуры : GENERIC PROCEDURE Старое_Имя Процедуры Функции: GENERIC FUNCTION Старое_Имя_Функции RENAMES; Описание переименования объекта определяет новый взгляд на переименованный объект, свойства которого остаются идентичными свойствам объекта, существовавшими до переименования. При переименовании объектов проблемы могут возникать с объектами, зависящими от дискриминантов. Кроме того, переименование невозможно, если переменная имеет неограниченный тип или тип ali-ased. Отрезки массивов не могут быть переименованы, если запрещено переименование самого массива. Задача или защищенный модуль переименовываются как объект. Единичная задача (защищенный модуль ) не может быть переименована, так как имеет анонимный тип. Объекты анонимного типа массив или ссылочного типа тоже не могут быть переименованы. При переименовании подпрограмм или входов их спецификации должны иметь одинаковый профиль параметров и результат, а также одинаковые виды параметров. D Примеры: Различают переименование описания подпрограммы (входа) и переименования теля подпрограммы. Если подпрограмма описана в спецификации пакета, то ее определение может быть выполнено через переименование в теле пакета. Переименование требует согласования вида параметров. function Т (А, В : Fixed ) return Fixed renames " + "; procedure Stub(X: integer) renames Grant; function Wax return Matrix renames Queen; entry Data_ln( E: out Element) renames Base; Процедура может быть переименована только как процедура, функция (операция) - только как функция (операция). Вход может быть переименован как процедура, новое имя определяется в контексте, допускающем имя процедуры. Вход из семей-ства входов может быть переименован, но семейство входов не может быть переименовано целиком. Ш СОВЕТЫ: * Минимизируйте использование контекста With в спецификациях. * Не оперируйте глобальными параметрами в подпрограммах и пакетах. * Избегайте ненужной видимости; прячьте детали реализации программы от пользователяю » Используйте дочерние библиотечные модули для контроля видимости как части подсистемного интерфейса. * Используйте личные библиотечные модули для представления разных видов понятий . » Размещайте в спецификации пакета только то , что неоходимо при использовании вне пакета. * Минимизируйте число описаний в спецификации пакета. Alt; Name : Dog renames Cat; ER434 : exception renames Fire; package Tank renames Vector; generic package DECCA renames |
| Оглавление| |