Что такое диаграмма объектов?
Это диаграмма объектов — это структурная диаграмма UML которая выступает в качестве конкретного, реального снимка состояния вашего приложения. В то время как диаграмма классов описывает абстрактные чертежи, типы данных и структурные правила системы, диаграмма объектов визуализирует живой экземпляр выполнения в определенный момент времени. Она моделирует фактическое создание объектов, отображает точные значения, присвоенные их полям, и выделяет конкретные связи, существующие между этими экземплярами во время выполнения.
Этот конкретный тип диаграммы UML чрезвычайно ценен для отладки сложных структур данных, объяснения сильно вложенных состояний отношений (например, графов деревьев родитель-ребёнок) или проверки того, как инженерный шаблон проектирования ведёт себя ожидаемым образом при определённых граничных условиях. С помощью VPasCode, вы можете чисто задавать живые связи между объектами, полностью обходя ручные инструменты рисования прямоугольников.
Руководство по основному синтаксису: элементы и конструкции
Чтобы создать точную, соответствующую стандартам диаграмму объектов UML в PlantUML, необходимо понимать создание объектов, присвоение значений полям и сопоставление связей между экземплярами.
1. Создание объектов (имя против типов классов)
Объекты объявляются с помощью ключевого слова object ключевого слова. Согласно стандартным правилам моделирования UML, вы определяете объект, указав его уникальное имя экземпляра, за которым следует двоеточие и тип чертежа родительского класса:
object "currentUser : Account" as activeUser ![]()
Совет профессионала: Всегда используйте ключевое слово as для сопоставления длинного объявления имени экземпляра с коротким внутренним сокращённым идентификатором (например, activeUser) для быстрого и чистого рисования линий связей.
2. Присвоение состояний полей и значений во время выполнения
Чтобы заполнить ваши объекты тестовыми значениями, откройте блок тела с помощью закрывающих фигурных скобок и напишите свои назначения пар «ключ-значение» данных на отдельных строках. В отличие от определений классов, здесь не нужно добавлять типы данных — используйте фактические операционные значения:
object "adminCart : ShoppingCart" as cart1 {
cartId = "CART-9081"
itemCount = 3
isTaxExempt = false
} 
3. Связи экземпляров
Связи между конкретными экземплярами на диаграмме объектов представляют реальные указатели памяти, а не абстрактные структурные схемы. Вы отображаете эти связи с помощью сплошных двойных тире (“--). Вы также можете добавить строковые метки, чтобы указать функциональный контекст связи:
activeUser -- cart1 : "владеет и изменяет" 
Лучшие практики для практических диаграмм объектов
- Фокусируйтесь на важном: Не перечисляйте каждый отдельный элемент из определения класса. Включайте только ключевые значения переменных, которые напрямую объясняют конкретное состояние выполнения или ошибку, которую вы пытаетесь продемонстрировать.
- Держите связи нейтральными: Избегайте использования треугольников наследования или строгих ромбов композиции на диаграмме объектов. Используйте простые, плоские линии отношений (
--) или простые стрелки (-->) для отображения ссылок. - Выравнивайте итерации по горизонтали: Если вы отображаете список массива или последовательность исторических объектов, используйте горизонтальные навигационные стрелки, такие как
-right->чтобы заставить экземпляры отображаться чисто в одной строке.
Примеры диаграмм объектов PlantUML в реальной жизни
Пример 1: Состояние сессии токена идентификации (отображение конкретных значений)
Этот шаблон отображает активное состояние авторизации безопасности, демонстрируя, как один аутентифицированный пользователь связан с несколькими конкретными активными экземплярами сессий на машине с различными переменными данных.
@startuml
объект "targetUser : UserAccount" как user {
userId = 1042
username = "dev_admin"
status = "ACTIVE"
}
объект "sessionMobile : UserSession" как session1 {
sessionId = "SESS-AAA-99"
deviceOS = "iOS 17"
ipAddress = "192.168.1.54"
}
объект "sessionDesktop : UserSession" как session2 {
sessionId = "SESS-BBB-11"
deviceOS = "macOS 14"
ipAddress = "72.44.12.102"
}
' Установка связей во время выполнения
user -- session1 : "аутентифицирован на"
user -- session2 : "аутентифицирован на"
@enduml 
Разбор синтаксиса: Этот макет фиксирует определённый сценарий в рабочем коде: одна конкретная запись пользователя (ID 1042), управляющая двумя полностью раздельными экземплярами сессий во время выполнения одновременно. Каждый контейнер сессии отслеживает собственные параметры изолированной структуры метаданных.
Пример 2: Состояние выполнения счета-фактуры в электронной коммерции (многомодельные карты)
Этот продвинутый чертёж системы отображает завершённый граф финансовой транзакции. Он точно показывает, каким образом записи заказов, журналы транзакций и пакеты складских товаров связаны между собой в определённый момент времени.
@startuml
объект "buyerProfile : Customer" как customer {
email = "[email protected]"
tier = "VIP"
}
объект "activeOrder : Order" как order {
orderNumber = "#99122"
subtotal = 149.99
currency = "USD"
}
объект "stripeTransaction : LedgerEntry" как ledger {
referenceId = "ch_3Mv8x"
gatewayStatus = "SUCCESS"
settledAt = "2026-05-26"
}
объект "packageA : Shipment" как ship1 {
trackingCode = "1Z999AA1"
carrier = "UPS"
weightKg = 1.4
}
объект "packageB : Shipment" как ship2 {
trackingCode = "1Z999AA2"
carrier = "UPS"
weightKg = 0.8
}
' Структурные ссылки на выполнение
customer -- order : "подано"
order -- ledger : "финансируется через"
order -- ship1 : "выполнено через"
order -- ship2 : "выполнено через"
@enduml 
Разбор синтаксиса: Этот шаблон предоставляет чёткий обзор сложного состояния системы. Он показывает один заказ, связанный с успешным журналом транзакции оформления заказа, и разделённый на два отдельных физических файла доставки. Такая степень детализации делает его отличным чертежом для аудита структур данных и процессов системы.