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

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

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

Синтаксис

overriding_indicator ::= [не] переопределяя

Правила допустимости

Если объявление abstract_subprogram_declaration, null_procedure_declaration, expression_function_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ов позволяет обнаруживать ошибки на этапе компиляции, которые в противном случае могут вообще не быть обнаружены. Например, мы можем объявить очередь безопасности, производную от интерфейса Queue из 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);
Четыре первых объявления подпрограмм гарантируют, что эти подпрограммы переопределят четыре подпрограммы, унаследованные от интерфейса Queue. Опечатка в одной из этих подпрограмм будет обнаружена реализацией. Напротив, объявление Arrest гарантирует, что это новая операция.


Spec-Zone.ru

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