UML
Паттерны проектирования
Преподаватель: Галинова Анна Александровна
1
Проектирование
Процесс составления описания, необходимого для создания в заданных условиях еще не существующего объекта по первичному описанию этого объекта путем его детализации, дополнения, расчетов и оптимизации.
02.12.2022
UML и паттерны проектирования
1
1
UML
Диаграммы
1
Определение UML
UML - язык графического описания для объектного моделирования.
Цель UML — визуально представить диаграммы, которые легко понять каждому.
Не является языком программирования, но на основании UML-моделей возможна генерация кода.
02.12.2022
UML и паттерны проектирования
1
1
Определение UML
Словарь UML включает три вида строительных блоков
Сущности – это абстракции, которые являются основными элементами модели, связи соединяют их между собой, а диаграммы группируют представляющие интерес наборы сущностей.
02.12.2022
UML и паттерны проектирования
1
1
Типы диаграмм
02.12.2022
UML и паттерны проектирования
1
1
Диаграмма классов
Центральная методика моделирования, которая используется практически во всех объектно-ориентированных методах.
Эта диаграмма описывает типы объектов в системе и различные виды статических отношений, которые существуют между ними.
02.12.2022
UML и паттерны проектирования
1
1
Что такое класс
Класс - шаблон для создания объектов.
Он обеспечивает начальные значения состояний объектов:
- инициализацию полей-переменных
- реализацию поведения полей и методов.
02.12.2022
UML и паттерны проектирования
1
Класс описывает то, каким объект может быть
02.12.2022
UML и паттерны проектирования
1
Класс описывает то, каким объект может быть
02.12.2022
UML и паттерны проектирования
1
Переведем класс DOG в UML
Верхняя секция: имя класса
Средняя секция: свойства песика (атрибуты класса)
Нижняя секция: что может делать песик (методы или операции класса)
02.12.2022
UML и паттерны проектирования
1
Диаграмма классов
Наиболее распространенная при разработке ПО. Похожа на блок-схему, потому что классы представлены в виде блоков.
Предлагает визуальное представление о различных классах и о том, как они взаимосвязаны.
02.12.2022
UML и паттерны проектирования
1
Из чего состоит блок
Верхняя секция: имя класса
Средняя секция: атрибуты класса
Нижняя секция: методы или операции класса
02.12.2022
UML и паттерны проектирования
1
Из чего состоит блок
Атрибуты класса:
Тип атрибута отображается после двоеточия.
Атрибуты сопоставляются с переменными в коде.
02.12.2022
UML и паттерны проектирования
1
Из чего состоит блок
Классовые операции (методы):
Это действия, предоставляемые классом.
Возвращаемый тип параметров метода отображается после двоеточия после имени параметра.
Операции сопоставляются с методами класса в коде.
02.12.2022
UML и паттерны проектирования
1
Классовые отношения
Класс может быть вовлечен в одно или несколько отношений с другими классами
02.12.2022
UML и паттерны проектирования
1
Наследование
Это схематическое изображение отношения между родительским классом и его наследниками.
02.12.2022
UML и паттерны проектирования
1
Ассоциация
Связь классов.
02.12.2022
UML и паттерны проектирования
1
Реализация
Отношение интерфейса и объектов, реализующих этот интерфейс.
02.12.2022
UML и паттерны проектирования
1
Зависимость
Объект одного класса может использовать объект другого класса в своем методе.
1
02.12.2022
UML и паттерны проектирования
Агрегация
Когда один класс является частью другого.
1
02.12.2022
UML и паттерны проектирования
Композиция
Разновидность агрегации, только в этом случае, классы, являющиеся частью другого класса, уничтожают, когда уничтожается класс-агрегатор. Например наше тело состоит из органов, но сами по себе они не жизнеспособны.
1
02.12.2022
UML и паттерны проектирования
Имена отношений
1
02.12.2022
UML и паттерны проектирования
1
Шаблон проектирования
или - паттерн
1
Определение паттерна
Паттерн – повторяющийся элемент в различных сферах жизни. Паттерн ( психология ) – набор стереотипных поведенческих реакций или последовательности действий. Паттерн ( информатика ) – эффективный способ решения характерных задач проектирования.
1
02.12.2022
UML и паттерны проектирования
1
Определение паттерна
Паттерн – повторимая архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста.
Паттерн описывает задачу, которая часто возникает в работе, а также способ её решения. Данное решение можно потом использовать много раз и не изобретать ничего заново.
1
02.12.2022
UML и паттерны проектирования
1
Паттерн и архитектура
Архитектура приложения — это логическая структура, описывающая отдельные компоненты, их свойства и связи в виде единой системы.
Паттерны — это описания схем детализации отдельных подсистем приложения и взаимосвязей между ними.
При этом паттерны не являются частью программы, не влияют прямо на ее структуру и сохраняют полную независимость от языка программирования конкретной системы .
1
02.12.2022
UML и паттерны проектирования
1
Основные элементы паттерна
Результаты
Имя
Задача
Решение
Следствия применения паттерна и разного рода компромиссы.
Описание элементов дизайна, отношений между ними, функций каждого элемента.
Описывает проблему проектирования, её решения и последствия.
Описание того, когда следует применять паттерн.
1
02.12.2022
UML и паттерны проектирования
1
Какие бывают паттерны
Порождающие
Структурные
Поведенческие
29
02.12.2022
UML и паттерны проектирования
29
Порождающие паттерны
Описывают создание объекта или группы связанных объектов.
- Простая фабрика (Simple Factory)
- Фабричный метод (Factory Method)
- Абстрактная фабрика (Abstract Factory)
- Строитель (Builder)
- Прототип (Prototype)
- Одиночка (Singleton)
29
02.12.2022
UML и паттерны проектирования
30
Структурные паттерны
Компоновка объектов – как сущности могут использовать друг друга.
- Адаптер (Adapter)
- Мост (Bridge)
- Компоновщик (Composite)
- Декоратор (Decorator)
- Фасад (Facade)
- Приспособленец (Flyweight)
- Заместитель (Proxy)
30
02.12.2022
UML и паттерны проектирования
30
Поведенческие паттерны
Связаны с присвоением обязанностей объектам.
Описывают структуру и очерчивают шаблоны передачи данных, обеспечивают взаимодействия.
- Цепочка обязанностей (Chain of Responsibility)
- Команда (Command)
- Итератор (Iterator)
- Посредник (Mediator)
- Хранитель (Memento)
- Наблюдатель (Observer)
- Посетитель (Visitor)
- Стратегия (Strategy)
- Состояние (State)
- Шаблонный метод (Template Method)
30
02.12.2022
UML и паттерны проектирования
30
Фабричный метод (Factory Method)
Способ делегирования логики создания объектов дочерним классам.
30
02.12.2022
UML и паттерны проектирования
30
Строитель (Builder)
Позволяет создавать разные свойства объекта, избегая загрязнения конструктора.
30
02.12.2022
UML и паттерны проектирования
30
Адаптер (Adapter)
Позволяет помещать несовместимый объект в обёртку, чтобы он оказался совместимым с другим классом.
30
02.12.2022
UML и паттерны проектирования
30
Фасад (Facade)
«Interface»
«Interface»
IФасад
IАдрес
Предоставляет упрощённый интерфейс для сложной подсистемы.
+ ЗадатьУлицу()
+ ЗадатьАдрес()
+ ЗадатьКорпус()
+ ПрочитатьАдрес()
+ ЗадатьДом()
+ ЗадатьКвартиру()
+ ПрочитатьУлицу()
+ ПрочитатьКорпус()
+ ПрочитатьДом()
+ ПрочитатьКвартиру()
Адрес
Фасад
+ Адрес: String
- Улица: String
- Корпус: Integer
- Дом: Integer
- Квартира: Integer
36
02.12.2022
UML и паттерны проектирования
36
Цепочка обязанностей (Chain of Responsibility)
преемник
Позволяет создавать цепочки объектов.
Обработчик
Клиент
ОбработатьЗапрос()
Конкретный Обработчик 1
Конкретный Обработчик 2
ОбработатьЗапрос()
ОбработатьЗапрос()
36
02.12.2022
UML и паттерны проектирования
36
Итератор (Iterator)
Способ доступа к элементам объекта без раскрытия базового представления.
Итератор
Агрегат
Клиент
Первый()
Следующий()
Выполнено()
ТекущийЭлемент()
СоздатьИтератор ()
Конкретный Агрегат
Конкретный
Итератор
СоздатьИтератор()
36
02.12.2022
UML и паттерны проектирования
36
Наблюдатель (Observer)
1..*
1
Определяет зависимость между объектами, чтобы при изменении состояния одного из них его «подчинённые» узнавали об этом.
ТаблицаБД
Диаграмма
Круговая
Столбиковая
Диаграмма
Диаграмма
ТаблицаMSAccess
36
02.12.2022
UML и паттерны проектирования
36
Стратегия (Strategy)
Позволяет переключаться между алгоритмами или стратегиями в зависимости от ситуации.
Контекст
Стратегия
КонтекстИнтерфейс()
АлгоритмИнтерфейс()
Конкретная Стратегия С
Конкретная Стратегия В
Конкретная Стратегия А
АлгоритмИнтерфейс()
АлгоритмИнтерфейс()
АлгоритмИнтерфейс()
36
02.12.2022
UML и паттерны проектирования
36
Вывод
Самая трудная задача в объектно-ориентированном проектировании – разложить систему на объекты. Необходимо учитывать множество факторов.
Прежде, чем реализовать идею, которую хочешь разработать – разбери её по частям и создай архитектуру приложения в UML.
36
02.12.2022
UML и паттерны проектирования
36
Практическая задача
Создать UML – диаграмму интернет-магазина.
Описать процесс покупки товара в интернет-магазине (бизнес-процесс покупки). Из каких объектов он состоит?
36
02.12.2022
UML и паттерны проектирования
36
https://online.visual-paradigm.com/drive
36
02.12.2022
UML и паттерны проектирования
36