Сущности и отношения на диаграмме классов
Классификатор — это дескриптор множества однотипных объектов
→ может иметь экземпляры
действующее лицо (actor), вариант использования (use case), артефакт (artifact), тип данных (data type), ассоциация (association), класс ассоциации (association class), интерфейс (interface), класс (class), кооперация (collaboration), компонент (component), узел (node) и др., (сигнал (signal), … ) применяющиеся в процессе моделирования поведения.
Свойства классификаторов
1. Имя
2. Экземпляры
3. Абстрактный
4. Видимость
5. Область действия
6. Кратность
7. Могут участвовать в отношении обобщения
Сущности на диаграмме классов
Классы
Пакеты
Примечания
-
Класс — один из самых богатых элементов моделирования UML.
Секции:
«стереотип» ИМЯ {свойства} кратность
список описаний атрибутов
список описаний
операций
+ доп. секции = примечания
-
Атрибут — именованное место, в котором может храниться какое-то значение.
видимость ИМЯ [кратность] : тип = начальное значение {свойства}
Примеры описания атрибутов
Операции и методы
Операция — спецификация действия с объектом.
Метод — выполняемый алгоритм.
Видимость: + — # ∼
ИМЯ: операция экземпляра, ИМЯ: операция класса, ИМЯ: абстрактная операция
Параметры:
направление ПАРАМЕТР : тип = значение
Свойства операций
1. Параллелизм — когда имеется несколько потоков управления
2. Побочные эффекты
True — не меняет состояния системы
False (по умолчанию) — операция меняет состояние системы:
присваивает новые значения атрибутам, создает или уничтожает объекты и т. п.
Примеры описания операций
Параметры
Терминология:
Направления передачи параметров в UML:
Интерфейсы и типы данных
-
Интерфейс — это именованный набор абстрактных составляющих.
Тип данных — это:
Тип данных (в UML) — это классификатор, экземпляры которого не обладают индивидуальностью.
Идентификация классов
1. Словарь предметной области: существительные в ТЗ
2. Реализация вариантов использования
Если при реализации вариантов использования применяются диаграммы взаимодействия, то в этом процессе в качестве побочного эффекта выделяются некоторые классы непосредственно, поскольку на диаграммах коммуникации и последовательности основными сущностями являются объекты, которые по необходимости нужно отнести к определенным классам. Использование диаграмм деятельности также может подсказать, какие классы нужно определить в системе, особенно если на диаграмме деятельности наряду с потоком управления присутствует поток данных. Однако, если сценарии вариантов использования описываются на естественном языке или псевдокоде, то выделить классы значительно труднее. Фактически, если варианты использования реализуются на псевдокоде или диаграммами деятельности без всякой связи с объектами, то выявление объектной структуры системы просто откладывается «на потом».
На диаграмме коммуникации выявляется полезный класс Exceptions Handler, однако, вряд ли мог появиться из словаря: описывая предметную область, люди склонны закрывать глаза на возможные ошибки, исключительные ситуации и прочие неприятности.
3. Образцы проектирования
Отношения на диаграмме классов
Отношения зависимости
Стандартные стереотипы зависимости между классами и объектами
Отношение реализации
Классификатор использует интерфейс — зависимость со стереотипом «call» (требуемый интерфейс).
Классификатор реализует интерфейс — реализация (обеспеченный интерфейс).
Пример реализации и использования интерфейсов
Отношение обобщения
Применение обобщений:
Множественное наследование
Несколько иерархий обобщения
суперкласс
Ограничение: частичная упорядоченность
Пример:
Абстрактная операция (1). Операция с методом (2). Различие в том, что у абстрактной операции метод должен быть определен в подклассе.
Отношение ассоциации
-
Ассоциация в UML — это классификатор, экземпляры которого называются связями (link)
Объекты ассоциированных классов могут взаимодействовать во время выполнения
Имя ассоциации
Между классами должно быть отношение ассоциации (1) и может быть имя (2), поясняющее ее назначение. Дополнительно можно указать направление чтения имени ассоциации (3).
Кратность полюса ассоциации
Кратность полюса ассоциации указывает сколько объектов данного класса участвует в связи. Кратность может быть задана как конкретное число, и тогда в каждой связи со стороны данного полюса участвуют ровно столько объектов, сколько указано. Более распространён случай, когда кратность указывается как диапазон возможных значений, и тогда число объектов участвующих в связи должно находиться в пределах указанного диапазона.
* — неопределенное число
Агрегация и композиция
-
Агрегация — это ассоциация между классом А (часть) и классом В (целое)
Композиция — более сильные ограничения:
Примеры агрегации и композиции
Структура элементов системы
Производная ассоциация (1) — это элемент, который можно вычислить или определить по другим элементам. Он вводится в модель для ясности и наглядности.
Роль полюса ассоциации — это интерфейс, который представляет классификатор в данной ассоциации. Это способ указать как именно участвует классификатор в самой ассоциации.
Ассоциация класса Position самим с собой (1). На полюсах ассоциации указаны роли (2). Значок, показывающий направление чтения (3) позволяет прочесть данную ассоциацию как “Chief subordinates Subordinate”. Эта ассоциация призвана отразить наличие иерархии подчиненности должностей в организации.
Направление навигации
Для отображения факта возможности или не возможности навигации для данного полюса ассоциации применяется следующая нотация: если навигация для некоторого полюса возможна, то этот полюс отмечают стрелкой на конце линии ассоциации (1), если же навигация не возможна, то на конце линии ассоциации рисуют косой крестик (2).
Многополюсные ассоциации
Класс ассоциации
В случае использования класса ассоциации Job (предыдущая схема), который по определению является множеством пар должность – сотрудник, не может быть двух одинаковых пар. То есть не может быть так, чтобы некоторый сотрудник занимал полставки разработчика в одном проекте и еще (отдельно) четверть той же ставки в этом же проекте. В случае же промежуточного класса Job (вторая схема) это вполне возможно, что не совсем естественно.
Ограничения на полюсах ассоциации
Упорядоченность объектов (ordering) / уникальность (uniqueness) — наличие / отсутствие одинаковых объектов
Упорядоченность и изменяемость
Квалификатор полюса ассоциаций ‒ это атрибут (или несколько атрибутов) полюса ассоциации, значение которого (которых) позволяет выделить один (или несколько) объектов класса, присоединенного к другому полюсу ассоциации.
Основное назначение квалификатора ‒ снизить кратность противоположного полюса ассоциации, поэтому в основном он используется в ассоциациях с кратностями полюсов «один ко многим» или «многие ко многим» и стоит у полюса противоположному полюсу с кратностью «много».
Основная диаграмма классов
Один комментарий
Свежинцев Владислав
Очень интересно было изучить и взять себе на заметку данную статью.