Шаг 82.
Унифицированный язык моделирования UML.
Параметризованные классы

    На этом шаге рассмотрим шаблонные классы, как элемент диаграммы классов.

    Многие стратегические и тактические решения в объектно-ориентированном проектировании сложных систем требуют расширения системы обозначений. Как правило, разработчики стараются придерживаться основных обозначений и применять лишь те дополнительные понятия, без которых нельзя обойтись при анализе и проектировании деталей, играющих важную роль в визуализации или анализе системы.

    Некоторые языки программирования, например, C++, предусматривают шаблонные (параметризованные) классы. Шаблонный класс (template class) — это семейство классов, структура и функциональные свойства которых определяются формальными параметрами независимо друг от друга. Для того чтобы создать конкретный класс из этого семейства, формальные параметры должны быть заменены фактическими (процесс связывания). Конкретные классы могут иметь экземпляры.

    Шаблонные классы сильно отличаются от обычных классов. Это является основанием для того, чтобы использовать особые обозначения. Шаблонный класс изображается как обычный класс (см. рис. 1), но в правом верхнем углу пиктограммы находится пунктирный прямоугольник. Связанный класс (bound class) также изображается как обычный класс. Отношение связывания между шаблонным и связанным классами представляется в виде пунктирной стрелки, указывающей на шаблонный класс. Стрелка имеет метку "bind". Фактические параметры, соответствующие формальным параметрам шаблона, указываются в виде

<Формальный параметр —> Фактический параметр>.

Как показано на рис. 1, класс PlanSet (МножествоПланов) связан с классом Set (Множество), причем класс GardeningPlan (ПланВыращивания) является фактическим параметром, заменяющим формальный параметр Item (Элемент).


Рис.1. Шаблонный класс и связанные с ним классы

    Шаблонный класс не может иметь ни одного экземпляра и сам не может быть шаблонным параметром. Связанный класс представляет собой новый класс, отличающийся от всех конкретных классов семейства с другими фактическими параметрами.

    На следующем шаге рассмотрим видимость ассоциаций, атрибутов и операций.




Предыдущий шаг Содержание Следующий шаг