UML диаграммы
- Диаграмма классов
- Диаграмма состояний
- Sequence diagram
- Use Case diagram
- Entity-relationship diagram
- Package diagram
- Диаграмма компонентов
Диаграмма классов
структурная диаграмма языка моделирования UML, демонстрирующая общую структуру иерархии классов системы, их коопераций, атрибутов (полей), методов, интерфейсов и взаимосвязей (отношений) между ними.
Класс в диаграмме классов в контексте объектно-ориентированного программирования и моделирования — это элемент, описывающий объект с определенными характеристиками и поведением.
Дополнительные Элементы:
- Видимость: Каждый атрибут и метод могут иметь указатели видимости (например, публичный (+), приватный (-), защищенный (#)).
- Связи: На диаграммах классов также могут быть показаны отношения между классами, такие как наследование, ассоциации, агрегация и композиция.
1. Наследование
- Описание: Наследование - это механизм, с помощью которого один класс (подкласс или дочерний класс) может наследовать свойства и методы другого класса (суперкласса или родительского класса).
- Пример: Класс
Автомобиль
может быть родительским для классовГрузовик
иЛегковойАвтомобиль
, гдеГрузовик
иЛегковойАвтомобиль
наследуют общие свойства и методы отАвтомобиль
.
2. Ассоциации
- Описание: Ассоциация описывает связь между двумя и более классами, где объекты одного класса связаны с объектами другого.
- Пример: Класс
Профессор
иКафедра
могут быть связаны ассоциацией, гдеПрофессор
принадлежитКафедре
.
3. Агрегация
- Описание: Агрегация - это специализированный вид ассоциации, который представляет "содержит" отношение, где один класс (агрегатор) содержит или состоит из других классов, но без строгой зависимости между ними.
- Пример: Класс
Университет
может агрегировать классыКафедра
. Кафедры существуют независимо от Университета.
4. Композиция
- Описание: Композиция - еще один вид ассоциации, но с более сильной зависимостью. В композиции, если "целое" (родительский класс) уничтожается, то его части (дочерние классы) также уничтожаются.
- Пример: Класс
Комната
может быть частью классаДом
. ЕслиДом
будет уничтожен, то иКомната
также прекратит свое существование.
Основные Различия между ERD и диаграммой классов
- Область Применения: Сущность в ERD используется в контексте баз данных, в то время как класс в диаграмме классов применяется в объектно-ориентированном программировании.
- Фокус Моделирования: ERD фокусируется на структуре данных и их отношениях, в то время как диаграмма классов фокусируется на структуре и поведении объектов в программной системе.
- Связи и Отношения: В ERD ключевым элементом являются отношения между сущностями, в то время как в диаграмме классов важны отношения между классами, такие как наследование и агрегация.
Диаграмма состояний
Диаграмма состояний в программировании и системном анализе — это визуальное представление поведения системы, объекта или класса с точки зрения его состояний и переходов между этими состояниями. Она помогает понять, как объект меняет своё состояние в ответ на различные события или воздействия.
Как работает диаграмма состояний:
- Состояния:
- Каждое состояние представляет собой определённую фазу или условие в жизненном цикле объекта.
- Пример: для заказа это могут быть состояния "Новый", "Обрабатывается", "Отправлен", "Доставлен".
- Переходы:
- Переходы показывают, как система или объект переходит из одного состояния в другое.
- Каждый переход вызывается событием или действием. Например, заказ может перейти из состояния "Новый" в "Обрабатывается" после того, как продавец начнёт его обработку.
- События:
- События — это внешние или внутренние воздействия, которые вызывают переходы между состояниями.
- Пример: приход оплаты, завершение упаковки, изменение статуса отправления.
- Действия/Активности:
Sequence diagram
диаграмма, которая показывает объекты и их связи, включая передаваемые сообщения, подчеркивая временной порядок.
Основные элементы:
Актор, класс, компонент и т.д.
Связи (синхронное, асинхронное сообщение, вызов/возврат)
Линия жизни, спецификация использования
Объекты
Фокус управления
Линия жизни
Рекурсия
Рефлексия
Сообщения
Вызов
Use case diagram
диаграмма , которая показывает набор вариантов использования и действующих лиц, а также их связей.
актор
прецедент
связи
Граница
Кооперация
Entity-relationship diagram
Схема «сущность-связь» (также ERD или ER-диаграмма) — это разновидность блок-схемы, где показано, как разные «сущности» (люди, объекты, концепции и так далее) связаны между собой внутри системы.
Контекстная диаграмма системы (SCD) в инженерии-это диаграмма, которая определяет границу между системой или частью системы и ее средой, показывая объекты, которые взаимодействуют с ней. Эта диаграмма представляет собой высокоуровневое представление системы.
Диаграмма пакетов Пакеты сами по себе представляют собой группировку связанных классов, интерфейсов или даже других пакетов. Это как папка на вашем компьютере. Так же, как папки на компьютере помогают упорядочивать файлы (документы, картинки, музыка), пакеты помогают упорядочивать части программы, чтобы разработчикам было проще найти и работать с кодом.
Таким образом, когда вы видите диаграмму пакетов, это визуальное представление того, как разные части программного приложения сгруппированы вместе и как они взаимодействуют друг с другом. Речь идёт не о мельчайших деталях кода внутри, а о высокоуровневой организации — какие части сгруппированы вместе и как они формируют общую структуру приложения. Примеры:
- Пакет "Пользовательский интерфейс" (UI):
- Этот пакет включает в себя классы и файлы, которые напрямую взаимодействуют с пользователем: веб-страницы, стили (CSS), скрипты интерактивности (JavaScript).
- Примеры классов:
LoginPage
,ProductPage
,ShoppingCartPage
. - Пакет "Бизнес-логика":
- Здесь находятся классы и модули, отвечающие за основную логику работы приложения: обработка заказов, управление учетными записями пользователей, расчет скидок.
- Примеры классов:
OrderProcessor
,DiscountCalculator
,UserManager
. - Пакет "Доступ к данным" (Data Access):
- Этот пакет содержит всё, что связано с хранением и извлечением данных: классы для работы с базой данных, файловым хранилищем, API внешних сервисов.
- Примеры классов:
UserRepository
,ProductRepository
,OrderRepository
. - Пакет "Модели данных":
- В нем определены структуры данных, которые используются по всему приложению: объекты пользователей, товаров, заказов.
- Примеры классов:
User
,Product
,Order
. - Пакет "Службы" (Services):
Каждый из этих пакетов группирует в себе логически связанные классы и файлы, что позволяет разработчикам быстро находить нужные компоненты и эффективно работать над определенными аспектами системы. Например, если нужно изменить способ авторизации пользователей, разработчик знает, что ему следует искать классы в пакете "Бизнес-логика", а именно в подразделе, отвечающем за управление пользователями.
Диаграмма пакетов для такого веб-приложения поможет визуализировать, как эти пакеты взаимодействуют друг с другом, и какие у них есть зависимости. Это похоже на карту, по которой новый разработчик может быстро ориентироваться в структуре проекта.
Диаграмма компонентов
Диаграмма компонентов в программировании работает как карта различных частей программного обеспечения, но здесь фокусируется на более конкретных элементах системы и на том, как они соединяются для выполнения определённых функций.
Каждый компонент — это отдельная часть программы, которая выполняет конкретную задачу. Например, компонент может быть ответственен за авторизацию пользователей, обработку платежей или отслеживание заказов. Важно, что каждый компонент взаимодействует с другими через чётко определённые интерфейсы.
- Компоненты: Это отдельные блоки или модули приложения. Например, "Сервер авторизации", "Сервис обработки заказов", "Интерфейс управления продуктами".
- Интерфейсы: Они показывают, как взаимодействуют компоненты. Интерфейсы определяют, какие данные могут быть отправлены или получены компонентом.
- Зависимости: Стрелки или линии, показывающие, как один компонент зависит от другого или использует его интерфейсы.
Допустим, у вас есть компонент для управления профилем пользователя. Этот компонент будет взаимодействовать с компонентом базы данных через интерфейс, который позволяет извлекать и обновлять данные пользователя. Компонент для обработки платежей будет взаимодействовать с внешними банковскими сервисами и также с компонентом заказов для обновления статуса оплаты.
Таким образом, диаграмма компонентов помогает разработчикам и архитекторам программного обеспечения видеть, как различные части приложения соединяются и работают вместе, что критически важно для понимания общей структуры и механизма работы программы.