UML. Проектирование классов и взаимодействий объектов.
План занятия:
Введение в UML
Что такое UML?
Что такое UML?
Что такое UML?
История
История
Назначение UML
Основные элементы UML
Структурные элементы
Поведенческие элементы
Группирующие элементы
Связующие элементы (отношения)
Виды диаграмм UML
Структурные диаграммы
Структурные диаграммы
Поведенческие диаграммы
Поведенческие диаграммы
Роль UML в процессе разработки ПО
Диаграмма классов
Вспоминаем!
Дополнительные характеристики
Что такое диаграмма классов?
Виды связей между классами
Виды связей между классами
Ассоциация
Агрегация
Композиция
ВАЖНО!
Наследование
Небольшая шпаргалка
Идентификация ключевых классов и объектов
Как определить классы?
Как определить классы?
Пример моделирования
Пример моделирования
Частые ошибки
Частые ошибки
Частые ошибки
Примеры диаграммы классов
4.39M
Category: programmingprogramming

UML. Проектирование классов и взаимодействий объектов

1. UML. Проектирование классов и взаимодействий объектов.

UML. ПРОЕКТИРОВАНИЕ
КЛАССОВ И
ВЗАИМОДЕЙСТВИЙ
ОБЪЕКТОВ.
C
Раздел 2. Методы проектирования и программирования ПО

2. План занятия:

• Проверка домашнего задания;
• Введение в UML;
• Проектирование классов;
• Проектирование взаимодействия объектов;
• Практические аспекты проектирования;
• Инструменты для создания UML-диаграмм.

3. Введение в UML

ВВЕДЕНИЕ В UML
C
UML. Проектирование классов и взаимодействий объектов.

4. Что такое UML?

UML (Unified Modeling
Language) — это
унифицированный язык
моделирования, который
используется для
визуального описания,
проектирования и
документирования
программных систем и
бизнес-процессов.

5. Что такое UML?

Говоря простыми словами, UML — это набор
стандартных диаграмм (например, диаграмма
классов, диаграмма последовательностей), с
помощью которых можно рисовать модели системы:
• как она устроена (структура),
• как она работает (поведение),
• как её части взаимодействуют (коммуникация).

6. Что такое UML?

Стоит понимать, что:
•UML не язык программирования;
• UML универсален – подходит для разных языков
программирования и типов систем;
• Цель UML – облегчить понимание системы
всеми участниками разработки.

7. История

• 1980-е годы: Развитие объектно-ориентированного
программирования породило множество методологий
(например, метод Буча, методология Омера-Якобсона,
нотация Рамбога).
• 1994–1995: Три ведущих специалиста — Гради Буч,
Джеймс Рамбo и Айвар Якобсон — начали
сотрудничество. Их целью было объединить свои подходы
и создать единый стандарт.
• 1997 год: После нескольких промежуточных версий был
опубликован UML 1.0. Этот стандарт был представлен
консорциумом OMG (Object Management Group).

8. История

• 1997–2005: Развитие UML, выпуск версий 1.x с
уточнением различных аспектов языка.
• 2005 год: Появление UML 2.0, которая значительно
расширила возможности языка, добавив новые типы
диаграмм и улучшив формальную строгость.
• Сейчас: UML активно используется и поддерживается
OMG, оставаясь стандартом для моделирования
систем различной сложности.

9. Назначение UML

UML — это графический язык моделирования, который служит
для:
• Визуализации: помогает представить архитектуру и
поведение системы с помощью диаграмм.
• Спецификации: позволяет точно описывать структуру и
функциональность компонентов системы.
• Конструирования: интегрируется с CASE-средствами,
которые могут генерировать код из UML-диаграмм.
• Документирования: поддерживает полное описание
системы, что полезно для поддержки и развития ПО.

10. Основные элементы UML

UML включает несколько основных категорий
элементов, которые используются для построения
диаграмм:
• Структурные элементы;
• Поведенческие элементы;
• Группирующие элементы;
• Связующие элементы.

11. Структурные элементы

•Классы — описывают объекты системы (с их
атрибутами и методами).
•Объекты — конкретные экземпляры классов.
•Акторы — внешние пользователи или системы,
взаимодействующие с системой.
•Компоненты — части системы (например, модули или
пакеты).
•Узлы (Nodes) — физические устройства или среды
выполнения.

12. Поведенческие элементы

•Сценарии (Use Cases) — описывают
функциональность системы с точки зрения
пользователя.
•Состояния — фиксируют состояния объекта в
ответ на события.
•Действия и активности — показывают, что
именно выполняется.

13. Группирующие элементы

• Пакеты — логические контейнеры для
объединения элементов диаграммы.

14. Связующие элементы (отношения)

• Ассоциация — связь между
классами/объектами.
• Зависимость — один элемент использует другой.
• Обобщение (наследование) — один элемент
наследует свойства другого.
• Реализация — интерфейс реализуется классом.

15. Виды диаграмм UML

Всего в UML (версии 2.x) насчитывается 14
стандартных типов диаграмм, которые
делятся на две большие группы:
• Структурные диаграммы;
• Поведенческие диаграммы.

16. Структурные диаграммы

Они показывают "что есть" в системе:
•Диаграмма классов (Class Diagram) — описывает
классы и их связи.
•Диаграмма объектов (Object Diagram) —
показывает конкретные экземпляры объектов.
•Диаграмма компонентов (Component Diagram) —
отражает архитектуру системы на уровне
компонентов.

17. Структурные диаграммы

•Диаграмма развертывания (Deployment Diagram)
— описывает физическое расположение
компонентов на узлах.
•Диаграмма пакетов (Package Diagram) —
отображает организацию системы на уровне
пакетов.
•Диаграмма профилей (Profile Diagram) —
используется для создания собственных
расширений UML.

18. Поведенческие диаграммы

Они показывают "как система работает":
• Диаграмма прецедентов (use case diagram) — описывает
функциональность системы и взаимодействие с
пользователями.
• Диаграмма активности (Activity Diagram) — моделирует
рабочие процессы и бизнес-логики.
• Диаграмма состояний (State Machine Diagram) —
показывает смену состояний объектов.
• Диаграмма последовательностей (Sequence Diagram) —
отображает взаимодействия объектов во времени.

19. Поведенческие диаграммы

• Диаграмма коммуникации (Communication Diagram)
— описывает обмен сообщениями между
объектами.
• Диаграмма взаимодействий (Interaction Overview
Diagram) — объединяет элементы диаграмм
последовательностей и активностей.
• Диаграмма временных диаграмм (Timing Diagram)
— акцент на временных характеристиках
взаимодействий.

20. Роль UML в процессе разработки ПО

UML играет роль универсального языка описания, который помогает
разработчикам, аналитикам, архитекторам и даже заказчикам
понимать, проектировать и управлять сложными программными
системами.
Его роль можно рассмотреть на ключевых этапах разработки:
• Анализ требований;
• Проектирование архитектуры и системы;
• Проектирование поведения;
• Разработка и реализация;
• Сопровождение и развитие.

21. Диаграмма классов

ДИАГРАММА
КЛАССОВ
C
UML. Проектирование классов и взаимодействий объектов.

22. Вспоминаем!

Что такое класс?
Класс — это шаблон (или чертёж), по которому создаются
объекты. Он описывает структуру и поведение группы объектов,
обладающих общими свойствами и методами.
Какие есть компоненты класса?
Класс состоит из атрибутов и методов.

23. Дополнительные характеристики

Помимо атрибутов и методов в классах существует ещё одно
понятие – модификаторы доступа.
Модификаторы доступа:
•+ (public) — доступен всем,
•- (private) — доступен только внутри класса,
•# (protected) — доступен внутри класса и его подклассов.
Типы данных для атрибутов и возвращаемые значения для методов
указываются после двоеточия:
•цвет: String
•ускорить(скорость: Integer): void

24. Что такое диаграмма классов?

Диаграмма классов — это графическое
представление классов и их взаимосвязей. Она
показывает структуру системы (классы, интерфейсы)
и отношения между ними.

25. Виды связей между классами

Основные обозначения отношений между классами
•Ассоциация:
•Простая линия между классами.
•Может иметь мультиплицитет (например, 1..*,
0..1) и название.
•Агрегация:
•Линия с пустым ромбом у класса-«владельца».
•Пример: Команда содержит Игроков.

26. Виды связей между классами

•Композиция:
•Линия с заполненным ромбом.
•Показывает сильную зависимость (жизненный
цикл объектов связан).
•Наследование (обобщение):
•Линия с треугольной стрелкой к родительскому
классу.
•Интерфейс (реализация):
•Пунктирная линия с треугольной стрелкой.

27. Ассоциация

Каждый конец ассоциации обладает кратностью (синоним –
мощностью), которая показывает, сколько объектов,
расположенных с соответствующего конца ассоциации,
может участвовать в данном отношении. В примере: каждый
товар имеет сколь угодно Записей в накладной, но каждая
Запись в накладной имеет обязательно один Товар.

28. Агрегация

Агрегация (aggregation) – это ассоциация типа «целое-часть». Агрегация в UML
представляется в виде прямой с ромбом на конце.
Ромб на связи указывает, какой класс является агрегирующим (т.е.
«состоящим из»); класс с противоположного конца — агрегированным (т.е. те
самые «части»).

29. Композиция

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

30. ВАЖНО!

Важно понимать разницу между агрегацией и
композицией: при агрегации объекты-части могут
существовать сами по себе, а при композиции —
нет. Пример агрегации: автомобиль—колесо,
пример композиции: дом—комната.

31. Наследование

Наследование (inheritance) – это отношение типа «общее-частное».
Позволяет определить такое отношение между классами,
когда один класс обладает поведением и структурой ряда других
классов.

32. Небольшая шпаргалка

Сущность
Что это
Обозначение
Класс
Шаблон объектов (атрибуты+методы)
Прямоугольник с тремя
горизонтальными
областями
Атрибут
Данные класса
- имя: Тип
Метод
Действия класса
+ имя(): Тип
Ассоциация
Простая связь
Линия
Агрегация
«Часть-целое» (часть может жить отдельно)
Линия с ◊
Композиция
«Часть-целое) (часть не может жить отдельно) Линия с ♦
Наследование
Подкласс наследует родителя
Линия с ▷
Реализация
Класс реализует интерфейс
Пунктирная линия с ▷

33. Идентификация ключевых классов и объектов

ИДЕНТИФИКАЦИЯ
КЛЮЧЕВЫХ КЛАССОВ И
ОБЪЕКТОВ
C
Раздел 2. Методы проектирования и программирования ПО

34. Как определить классы?

Открываем техническое задание и внимательно его
читаем. Если представить систему как фильм, то
классы — это ваши "главные герои". В техническом
задании выделяем существительные. Например:
"Пользователь регистрируется в системе и покупает
товары".
Возможные ключи: Пользователь, Система, Товар,
Покупка.

35. Как определить классы?

•Ищите устойчивые понятия:
Те объекты, которые реально существуют в системе и без
которых она не работает.
•Отделяйте роли и временные действия:
Например, Авторизация — это процесс, а не класс. Зато
Пользователь точно класс.

36. Пример моделирования

Интернет-магазин
Классы:
•Пользователь
•Товар
•Корзина
•Заказ
Атрибуты и методы:
Класс
Атрибуты
Методы
Пользовате
ль
логин, пароль, email
зарегистрироваться(),
войти()
Товар
название, цена,
описание
показатьИнфо
Корзина
списокТоваров
добавитьТовар(),
удалитьТовар()
Заказ
дата, статус,
сумма
оформить(), оплатить()

37. Пример моделирования

Взаимодействия:
1. Пользователь добавляет товар в корзину.
2. Корзина формирует заказ.
3. Заказ отправляется в оплату.
На диаграмме классов будет видно:
•Пользователь ассоциирован с Корзина (1 к 1),
•Корзина агрегирует Товар (много товаров),
•Корзина создает Заказ.

38. Частые ошибки

Ошибка 1: Слишком много/мало классов
❌ Проблема: Создаётся кучу мелких классов или наоборот
лепится всё в один.
✅ Решение: Думайте по принципу "один класс — одна роль".
Ошибка 2: Путаница между классом и атрибутом
❌ Проблема: Например, в классе Товар делается атрибут
Поставщик как строку, хотя это может быть отдельный класс.
✅ Решение: Если объект имеет собственные характеристики и
поведение — делайте его классом.

39. Частые ошибки

Ошибка 3: Игнорирование связей между классами
❌ Проблема: Классы как "висят в воздухе", непонятно, как
они связаны.
✅ Решение: Обязательно продумывай ассоциации,
агрегацию, композицию и наследование.
Ошибка 4: Перегрузка диаграммы
❌ Проблема: На одну диаграмму лепят всё подряд.
✅ Решение: Разбивай систему на логические части и
делай несколько диаграмм.

40. Частые ошибки

Ошибка 5: Отсутствие модификаторов доступа
❌ Проблема: Не показывают, какие атрибуты и методы
публичные или приватные.
✅ Решение: Обязательно указывай +, -, # для понятности.

41. Примеры диаграммы классов

ПРИМЕРЫ
ДИАГРАММЫ
КЛАССОВ
C
Раздел 2. Методы проектирования и программирования ПО
English     Русский Rules