Раздел 12.5 - Ссылочные параметры (при объектной ориентации)

Часто при создании объектно-ориентированных систем необходимо передавать ссылки на тэговые типы (о тэговых типах мы говорили в Уроке 7). С целью облегчения разработки ОО-систем с использованием ссылочных типов, в Ada 95 был добавлен новый псевдо-режим передачи параметров, называемый "ссылочным".

Напомним, что каждый параметр, может быть передан подпрограмме в одном из трех режимов передачи: in, in out, или out. Вместо этого для задания режима передачи параметра можно использовать ключевое слово "access" с именем типа. Например:

 procedure Get(Agent : access Occupant; Direct_Object : access Occupant'Class);

Как же понимать этот пример?? Ответ звучит следующим образом:

Существует важное правило использования ссылочных параметров: они не могут принимать пустые значения (null). Если все же необходимо разрешить передачу пустых значений, нужно использовать режимы in, out или in out с обычным ссылочным типом.

Может быть сложно разобраться в ссылочных параметрах без более конкретных примеров, поэтому мы отложим дальнейшее обсуждение до Урока 18, где будут рассмотрены примеры их использования. Тем не менее, Вы уже должны были понять, что при использовании ссылочных типов при объектно-ориентированном программировании, скорее всего Вам понадобится псевдо-режим передачи параметров "access".


Упражнение:

Имеется следующее описание процедуры:

 procedure Jump(E : access Occupant'Class);

Произойдет ли диспетчеризация вызова процедуры Jump к одной из нескольких других подпрограмм, в зависимости от конкретного типа "E"?

  1. Да, вызов Jump будет динамически диспетчеризирован.
  2. Нет, вызов Jump не будет динамически диспетчеризирован.

Вы можете также:

PREVIOUS Перейти к предыдущему разделу

NEXT     Перейти к следующему разделу

OUTLINE  Вернуться к содержанию Урока 12

David A. Wheeler (dwheeler@ida.org)

Перевод: Юрий Королев   Общая редакция перевода: Г.Ю. Сисюк

Исходная копия этого документа находится по адресу "http://www.adahome.com/Tutorials/Lovelace/s12s5.htm".

Исходная копия перевода размещена на сайте http://www.ada-ru.org