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

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