Это руководство предоставляет подробное сравнение UMLДиаграммы объектов и Диаграммы классов, с акцентом на то, как диаграммы объектов фиксируют состояния системы во время выполнения по сравнению со статической структурой, предоставляемой диаграммами классов. Включает подробные объяснения, несколько примеров, чтобы помочь читателям понять оба типа диаграмм и их практическое применение.
1. Введение в диаграммы UML
Unified Modeling Language (UML) — это стандартизированный способ визуализации проектирования и поведения систем. Среди его типов диаграммДиаграммы классов и Диаграммы объектов являются критически важными для моделирования объектно-ориентированных систем, но выполняют разные функции:
Диаграммы классов описывают статическую структуру системы, определяя классы, их атрибуты, методы и отношения.
Диаграммы объектов фиксируют динамическое состояние системы в определенный момент во время выполнения, показывая созданные объекты и их отношения.
Это руководство исследует, как диаграммы объектов отражают состояния во время выполнения по сравнению с вечным, структурным взглядом диаграмм классов, с практическими примерами.
2. Диаграммы классов: статический чертеж
Цель и структура
Диаграммы классов являются основой объектно-ориентированного проектирования, обеспечивая статический взглядархитектуры системы. Они определяют:
Классы: Шаблоны для объектов, определяющие атрибуты (данные) и методы (поведение).
Связи: Связи, агрегации, композиции, обобщения и зависимости между классами.
Ограничения: Правила или условия, регулирующие структуру системы.
Диаграммы классов являютсявневременными, что означает, что они представляют архитектуру системы без привязки к конкретному моменту выполнения. Они используются при проектировании системы, планировании реализации и генерации кода.
Ключевые элементы
Класс: Представляется в виде прямоугольника с тремя разделами (имя, атрибуты, методы).
Атрибуты: Свойства или поля данных класса (например, name: String).
Методы: Операции или поведения, которые класс может выполнять (например, calculateTotal(): double).
Связи:
Связь: Общая связь между классами (сплошная линия).
Агрегация: Связь «имеет-а» (пустой ромб).
Композиция: Более сильная связь «владеет-а» (закрашенный ромб).
Обобщение: Наследование или связь «является-а» (стрелка с пустым треугольником).
Зависимость: Слабая связь, при которой один класс зависит от другого (штриховая линия).
Примеры сценариев
Диаграммы классов идеально подходят для:
Проектирования архитектуры программной системы.
Обмена информацией о структуре с разработчиками или заинтересованными сторонами.
Генерации черновиков кода в объектно-ориентированном программировании.
3. Диаграммы объектов: снимки во время выполнения
Цель и структура
Диаграммы объектов предоставляютснимок системы в определенный момент во время выполнения, показывая созданные объекты, их значения атрибутов и их отношения (связи). Они являютсядинамическими, фиксируя состояние системы в определенном сценарии или варианте использования.
Диаграммы объектов выводятся из диаграмм классов, поскольку объекты являются экземплярами классов, а связи — экземплярами ассоциаций, определенных на диаграмме классов.
Ключевые элементы
Объект: Представляется в виде прямоугольника с форматом objectName: ClassName, показывая конкретные значения атрибутов.
Связи: Соединения между объектами, представляющие экземпляры ассоциаций из диаграммы классов.
Значения атрибутов: Конкретные значения атрибутов объекта в определенный момент времени (например, цена = 99,99).
Множественность: Указывает, сколько объектов участвуют в отношении (например, один ко многим).
Примеры сценариев
Диаграммы объектов полезны для:
Визуализации состояния объектов в определенном сценарии использования или тестовом сценарии.
Отладки для понимания взаимодействия объектов во время выполнения.
Проверки поведения системы в соответствии с требованиями.
4. Ключевые различия между диаграммами объектов и классов
Аспект
Диаграмма классов
Диаграмма объектов
Цель
Определяет статическую структуру и отношения классов.
Показывает снимок объектов и их отношений во время выполнения.
Фокус
Абстрактные классы и их потенциальные отношения.
Конкретные экземпляры (объекты) и их текущее состояние.
Временная перспектива
Временно несуществующий, представляющий проектирование системы.
Временной, фиксирующий конкретный момент выполнения.
Содержание
Атрибуты, методы и отношения (связи, обобщения).
Объекты с конкретными значениями атрибутов и ссылками.
Сценарий использования
Проектирование системы, архитектура, генерация кода.
Отладка, проверка сценариев, анализ состояния во время выполнения.
Пример
Класс Car с атрибутами, такими как model, и методами, такими как drive().
Объект myCar: Car с model = «Toyota» и связанный с объектом myEngine: Engine.
5. Практические примеры
Ниже приведены три подробных примера сравнения диаграмм классов и объектов для различных систем.
Пример 1: Онлайн-система покупок
Сценарий
Онлайн-система покупок имеет клиентов, заказы и товары. Диаграмма классов определяет структуру, а диаграмма объектов показывает заказ клиента на этапе оформления заказа.
Диаграмма классов
Пояснение: Диаграмма классов определяет:
Customer с атрибутами и методом для размещения заказов.
Order с атрибутами и методом для расчета общей суммы.
Product с атрибутами и методом для получения цены.
Связи: клиент может разместить несколько заказов (один ко многим), а заказ содержит несколько товаров (один ко многим).
Диаграмма объектов
Пояснение: Диаграмма объектов показывает:
Конкретный клиент (john: Customer) с конкретными значениями атрибутов.
Определенный заказ (order123: Order), сделанный Джоном, на общую сумму 149,98 долларов.
Два продукта (ноутбук и мышь) в заказе с их конкретными ценами.
Ссылки, показывающие отношения во время выполнения (например, Джон сделал заказ order123, который содержит ноутбук и мышь).
Пример 2: Система управления библиотекой
Сценарий
Система библиотеки управляет книгами, членами и выдачами. Диаграмма классов описывает структуру, а диаграмма объектов показывает, как член берет книги.
Диаграмма классов
Пояснение: Диаграмма классов определяет:
Член с атрибутами и методом для получения книг.
Книга с атрибутами и методом проверки доступности.
Выдача с атрибутами и методом продления выдачи.
Связи: Член может иметь несколько выдач, а книга может быть взята в нескольких выдачах.
Диаграмма объектов
Пояснение: Диаграмма объектов показывает:
Определенный член (alice: Member) с конкретными значениями атрибутов.
Определенная выдача (loan001: Loan) с датами получения и возврата.
Определенная книга (book1: Book), которую взяла Алиса.
Ссылки, показывающие состояние во время выполнения (например, Алиса берет книгу1 через выдачу loan001).
Пример 3: Система автосалона
Сценарий
Система автосалона управляет автомобилями, двигателями и колесами. Диаграмма классов определяет структуру, а диаграмма объектов показывает конфигурацию конкретного автомобиля.
Диаграмма классов
Пояснение: Диаграмма классов определяет:
Автомобиль с атрибутами и методом запуска двигателя.
Двигатель с атрибутами и методом зажигания.
Колесо с атрибутами и методом вращения.
Связи: Автомобиль содержит один двигатель (композиция) и четыре колеса (композиция).
Диаграмма объектов
Объяснение: Диаграмма объектов показывает:
Определённый автомобиль (myCar: Car) с моделью «Toyota Camry» и годом выпуска 2023.
Определённый двигатель (engine1: Engine) типа V6.
Четыре определённых колеса (wheel1 по wheel4) размером 17.
Связи, показывающие состав объектов во время выполнения (например, myCar содержит engine1 и четыре колеса).
6. Когда использовать каждую диаграмму
Используйте диаграммы классов, когда:
Проектирование архитектуры или структуры системы.
Обмен информацией о чертеже системы с разработчиками или заинтересованными сторонами.
Генерация шаблонов кода или схем баз данных.
Определение повторно используемых шаблонов для объектов.
Используйте диаграммы объектов, когда:
Отладка для понимания состояний объектов и их взаимодействия во время выполнения.
Проверка конкретных сценариев или случаев использования (например, тестирование процесса оформления заказа).
Иллюстрация того, как объекты взаимодействуют в определённой ситуации.
Обучение или объяснение поведения во время выполнения для не технических заинтересованных сторон.
7. Обзор
Диаграммы классов обеспечивают статическое, абстрактное представлениесистемы, определяя классы, их атрибуты, методы и отношения. Они необходимы для проектирования и планирования системы.
Диаграммы объектов фиксируют динамический, конкретный снимоксистемы во время выполнения, показывая конкретные объекты, их значения атрибутов и связи. Они идеально подходят для отладки и проверки сценариев.
Вместе эти диаграммы дополняют друг друга: диаграммы классов заложили основу, а диаграммы объектов показывают, как эта основа работает на практике.
Используя примеры, такие как система онлайн-покупок, система управления библиотекой и система автосалона, этот учебник демонстрирует, как моделировать как структуру, так и состояния системы во время выполнения с помощью UML.
Этот учебник предоставляет всестороннее руководство по пониманию и применению диаграмм классов и объектов. Освоив оба типа диаграмм, вы сможете эффективно проектировать, анализировать и отлаживать объектно-ориентированные системы.