Шаблон класса (параметризованный класс)

Некоторые языки, в особенности C++, включают в себя понятие пара­метризованного класса (parameterized class) или шаблона (template). (Шаблоны могут быть включены в языки Java и С# в ближайшем бу­дущем.)

Наиболее очевидная польза от применения этого понятия проявляется при работе с коллекциями в строго типизированных языках. Таким образом, в общем случае поведение для множества можно определить с помощью шаблона класса Set (Множество).

class Set <T> {

void insert (T newElement);

void remove (Т anElement);

После этого можно использовать данное общее определение для зада­ния более конкретных классов-множеств:

Set <Еmрlоуее> employeeSet;

Для объявления класса-шаблона в языке UML используется нотация, показанная на рис. 5.17. Прямоугольник с буквой «Т» на диаграмме служит для указания параметра типа. (Можно указать более одного параметра.)

Применение параметризованного класса, такого как Set<Employee>, на­зывается образованием производных (derivation). Образование произ­водных можно изобразить двумя способами. Первый способ отражает синтаксис языка C++ (рис. 5.18). Выражение образования производ­ных описывается в угловых скобках в виде <parameter-name::parameter-valuex Если указывается только один параметр, то обычно имя пара­метра опускают. Альтернативная нотация (рис. 5.19) усиливает связь с шаблоном и допускает переименование связанного элемента.


Ключевое слово «bind» (связать) является стереотипом отношения уточнения. Это отношение означает, что класс EmployeeSet (Множество служащих) будет согласован с интерфейсом класса Set. Можете счи­тать EmployeeSet подтипом типа Set. Это соответствует другому способу реализации типизированных коллекций, который заключается в объ­явлении всех соответствующих подтипов.

Однако использование образования производных не эквивалентно оп­ределению подтипа. В связанный элемент нельзя добавлять новые воз­можности - он полностью определен своим шаблоном; можно только добавить информацию, ограничивающую его тип. Если же вы хотите добавить возможности, то должны создать некоторый подтип.

Перечисления

Перечисления (рис. 5.20) используются для представления фиксиро­ванного набора значений, у которых нет других свойств кроме их сим­волических значений. Они изображаются в виде класса с ключевым словом «enumeration»



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: