ВУЗ:
Составители:
Рубрика:
49
package Класс «Очередь» is
type Очередь is limited tagged private;
…
procedure Добавить (В Очередь: in out Очередь;
элемент: Элемент);
…
private
…
end Класс «Очередь».
У этого класса один формальный родовой параметр – тип «Элемент».
Вместо этого параметра можно подставить почти любой тип данных.
Произведём настройку, т.е. объявим два конкретизированных класса –
«ОчередьЦелыхЭлементов» и «ОчередьЛилипутов»:
package Класс «ОчередьЦелыхЭлементов» is new Класс «Очередь»
(Элемент => Integer);
package Класс «ОчередьЛилипутов» is new Класс «Очередь»
(Элемент => Лилипут).
В первом случае мы настраивали класс на конкретный тип «Integer»
(фактический родовой параметр), во втором случае – на конкретный тип
«Лилипут».
Классы «ОчередьЦелыхЭлементов» и «ОчередьЛилипутов» можно
использовать как обычные классы. Они содержат все средства родового
класса, но только эти средства настроены на использование конкретного
типа, заданного при конкретизации.
Графическая иллюстрация отношений конкретизации приведена на
рис. 2.17. Отметим, что отношение конкретизации отображается с помо-
щью подписанной стрелки отношения зависимости. Это логично, по-
скольку конкретизированный класс зависит от родового класса (класса-
шаблона).
Рис. 2.17. Отношения конкретизации родового класса
Класс «Очередь»
Класс «ОчередьЦелыхЭлементов»
Класс «ОчередьЛилипутов»
Страницы
- « первая
- ‹ предыдущая
- …
- 47
- 48
- 49
- 50
- 51
- …
- следующая ›
- последняя »