Spec-Zone.ru › Ada 2005
Справочник по Ada 2005

8.3.1 Индикаторы переопределения

Индикатор overriding_indicator используется для объявления того, что операция предназначена для переопределения (или не переопределения) унаследованной операции.

Синтаксис

overriding_indicator ::= [не] переопределяющий

Правила легальности

Если у объявления abstract_subprogram_declaration, null_procedure_declaration, subprogram_body, subprogram_body_stub, subprogram_renaming_declaration, generic_instantiation подпрограммы или у subprogram_declaration (кроме защищённой подпрограммы) есть overriding_indicator, то:
  • операция должна быть примитивной для некоторого типа;
  • если overriding_indicator равен переопределяющий, то операция должна переопределять гомограф в месте объявления или тела;
  • если overriding_indicator равен не переопределяющий, то операция не должна переопределять какой-либо гомограф (нигде).
Помимо мест, где обычно применяются правила легальности, эти правила также применяются в частях с ограничениями экземпляра генерируемого блока.
ПРИМЕЧАНИЯ
8 Правила для overriding_indicatorов для задач, защищённых записей и защищённых подпрограмм можно найти в 9.5.2 и 9.4 соответственно.

Примеры

Использование overriding_indicatorов позволяет обнаруживать ошибки во время компиляции, которые иначе могут не быть обнаружены вовсе. Например, мы можем объявить очередь безопасности, производную от интерфейса очереди 3.9.4, как:
тип Security_Queue есть новый Queue с записями ...;
переопределяющий
процедура Append(Q : вход выход Security_Queue; Person : вход Person_Name);
переопределяющий
процедура Remove_First(Q : вход выход Security_Queue; Person : вход Person_Name);
переопределяющий
функция Cur_Count(Q : вход Security_Queue) возвращает Natural;
переопределяющий
функция Max_Count(Q : вход Security_Queue) возвращает Natural;
не переопределяющий
процедура Arrest(Q : вход выход Security_Queue; Person : вход Person_Name);
Первые четыре объявления подпрограмм гарантируют, что эти подпрограммы будут переопределять четыре подпрограммы, унаследованные из интерфейса очереди. Опечатка в одной из этих подпрограмм будет обнаружена реализацией. И наоборот, объявление Arrest гарантирует, что это новая операция.





Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API