Похожие презентации:
UML. Проектирование классов и взаимодействий объектов
1. UML. Проектирование классов и взаимодействий объектов.
UML. ПРОЕКТИРОВАНИЕКЛАССОВ И
ВЗАИМОДЕЙСТВИЙ
ОБЪЕКТОВ.
C
Раздел 2. Методы проектирования и программирования ПО
2. План занятия:
• Проверка домашнего задания;• Введение в UML;
• Проектирование классов;
• Проектирование взаимодействия объектов;
• Практические аспекты проектирования;
• Инструменты для создания UML-диаграмм.
3. Введение в UML
ВВЕДЕНИЕ В UMLC
UML. Проектирование классов и взаимодействий объектов.
4. Что такое UML?
UML (Unified ModelingLanguage) — это
унифицированный язык
моделирования, который
используется для
визуального описания,
проектирования и
документирования
программных систем и
бизнес-процессов.
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. Методы проектирования и программирования ПО
Программирование