
- •3 Классы
- •4. Пакеты (Packages)
- •5 Утилита – класс, объединяющий группу общедоступных (глобальных) переменных и процедур.
- •7 Ассоциации
- •8 Роли ассоциаций
- •Диаграмма классов
- •Обобщение (наследование)
- •15.1.4. Диаграммы последовательностей
- •15.1.5. Кооперативные диаграммы
- •Основные приёмы xp
- •Представители заказчиков
- •32 Структура группы разработчиков
- •33 Виды документации в xp
- •Ограничения
5 Утилита – класс, объединяющий группу общедоступных (глобальных) переменных и процедур.
QuickUML Объектно-ориентированная утилита под Linux, Mac OS X и Windows, предназначенная для интеграции и синхронизации основного набора UML-моделей и обладающая tabbed-навигацией. Утилиты В некоторых случаях при описании классов приходится часто пользоваться некоторыми глобальными функциями и переменными. Поэтому для удобства программирования введено такое понятие как утилита (utility), где собираются подобные функции и переменные. Этой сущности в UML дан статус класса специального вида. На диаграмме утилита изображается как класс со стереотипом "utility", и может иметь как атрибуты, т ак и операции.
6 Шаблоны или параметризованные классы
Шаблон (template) или параметризованный класс (parametrized class) предназначен для обозначения такого класса, который имеет один (или более) нефиксированный формальный параметр. Он определяет целое семейство или множество классов, каждый из которых может быть получен связыванием этих параметров с действительными значениями. Обычно параметрами шаблонов служат типы атрибутов классов, такие как целые числа, перечисление, массив строк и др. В более сложном случае формальные параметры могут представлять и операции класса.
Графически шаблон изображается прямоугольником, к верхнему правому углу которого присоединен маленький прямоугольник из пунктирных линий (рис. 5.19), большой прямоугольник может быть разделен на секции, аналогично обозначению для класса. В верхнем прямоугольнике указывается список формальных параметров для тех классов, которые могут быть получены на основе данного шаблона. В верхней секции шаблона записывается его имя по правилам записи имен для классов.
Рис. 5.19. Графическое изображение шаблона на диаграмме классов
Шаблон не может быть непосредственно использован в качестве класса, поскольку содержит неопределенные параметры. Чаще всего в качестве шаблона выступает некоторый суперкласс, параметры которого уточняются в его классах-потомках. Очевидно, в этом случае между ними существует отношение зависимости с ключевым словом «bind», когда класс-клиент может использовать некоторый шаблон для своей последующей параметризации. В более частном случае между шаблоном и формируемым от него классом имеет место отношение обобщения с наследованием свойств шаблона (рис. 5.20). В данном примере отмечен тот факт, что класс «Адрес» может быть получен из шаблона Связный_список на основе актуализации формальных параметров «S, k, l» фактическими атрибутами «улица, дом, квартира».
Этот же шаблон может использоваться для задания (инстанцирования) другого класса, скажем, класса «Точки_на_плоскости». В этом случае класс «Точки_на_плоскости» актуализирует те же формальные параметры, но с другими значениями, например, "ЬтсГ<координаты_точки, х, у>. Концепция шаблонов является достаточно мощным средством в ООП, и поэтому ее использование в языке UML позволяет не только сократить размеры диаграмм, но и наиболее корректно управлять наследованием свойств и поведения отдельных элементов модели.
7 Ассоциации
Бинарная ассоциация (binary association) Ассоциация между двумя классами
Наиболее простой случай данного отношения - бинарная ассоциация. Она связывает в точности два класса и, как исключение, может связывать класс с самим собой. Для бинарной ассоциации на диаграмме может быть указан порядок следования классов с использованием треугольника в форме стрелки рядом с именем данной ассоциации. Направление этой стрелки указывает на порядок классов, один из которых является первым (со стороны треугольника), а другой - вторым (со стороны вершины треугольника). Отсутствие данной стрелки рядом с именем ассоциации означает, что порядок следования классов в рассматриваемом отношении не определен.
В качестве простого примера отношения бинарной ассоциации рассмотрим отношение между двумя классами - классом "Компания" и классом "Сотрудник" (рис. 5.5). Они связаны между собой бинарной ассоциацией Работа, имя которой указано на рисунке рядом с линией ассоциации. Для данного отношения определен порядок следования классов, первым из которых является класс "Сотрудник", а вторым - класс "Компания". Отдельным примером или экземпляром данного отношения может являться пара значений (Петров И. И., "Рога&Копыта"). Это означает, что сотрудник Петров И. И. работает в компании "Рога&Копыта".
Рис. 5.5. Графическое изображение отношения бинарной ассоциации между классами
Ассоциация (Associate). Наиболее широко используемая связь между классами. Она имеет достаточно широкое значение и может означать, например, следующее:
1. Один класс осуществляет взаимодействие с другим каким-либо образом. Например:
Один класс включает в себя экземпляр другого класса. Например:
Видим, что перечисление Status включено в класс User, при этом имя поля Status, с областью видимости public.
3. Один класс включает в себя несколько экземпляров другого класса. Например:
Видим, что коллекция UsersCollection может включать от нуля до бесконечности объектов User. Возможные значения количества объектов:
«*» или «0..*» - любое количество объектов
«0..n» - любое количество объектов, но не больше n, например «0..5»
«n» - точное количество объектов, например «1», «5»
«n..*» - любое количество объектов, но не меньше n, например«1..*» - хотя бы один.
Если Ассоциация не может быть реализована без дополнительных классов (например, отношение «многие-ко-многим»), то она реализуется при помощи дополнительных классов ассоциации, которые предназначены решить эту задачу. Обозначается это следующим образом:
Ассоциацией (Association) называется структурное отношение, показывающее, что объекты одной сущности связаны с объектами другой (см. главу 5). Так, класс Библиотекаможет быть связан ассоциацией "один ко многим" с классом Книга, показывая, что все экземпляры второго принадлежат одному экземпляру первого. Если имеется объект класса Книга, можно всегда найти содержащую его Библиотеку, а зная Библиотеку, в ней можно осуществить навигацию ко всем Книгам. Графически ассоциация изображается в виде линии, связывающей класс сам с собой или с другими классами. Используйте ассоциации, если хотите показать структурные отношения.
К ассоциациям применимы четыре базовых дополнения: имя, роль и кратность на каждом конце и агрегирование. В распоряжении опытных пользователей имеется ряд других свойств для моделирования тонких деталей, например навигация, квалификация и различные виды агрегирования.
Навигация. С помощью простой, не содержащей дополнений ассоциации между двумя классами (скажем, Книгаи Библиотека) можно осуществлять навигацию между их объектами. Если явно не оговорено противное, то навигация по ассоциации может осуществляться в обоих направлениях. Но бывают случаи, когда необходимо ограничить ее только одним направлением. Например, как показано на рис. 10.3, при моделировании сервисов операционной системы можно столкнуться с ассоциацией между объектами User(пользователь) иPassword(пароль). Если дан объект класса User, то нужно уметь находить соответствующие объекты класса Password, но обратное недопустимо, то есть не должно быть возможности по паролю определить пользователя. Направление ассоциации можно выразить явно, дополнив ее стрелкой, указывающей на допустимое направление движения.
~~
Рис. 5.6. Графическое изображение тернарной ассоциации между тремя классами