O que é um Diagrama de Objetos?
Um Diagrama de Objetos é um diagrama estrutural diagrama UML que atua como uma captura concreta e em tempo real do estado da sua aplicação. Enquanto um Diagrama de Classes descreve os projetos abstratos, tipos de dados e regras estruturais de um sistema, um diagrama de objetos visualiza uma instância de execução ativa em um momento específico. Ele modela a instanciação de objetos reais, exibe os valores exatos atribuídos aos seus campos e destaca as ligações específicas que existem entre essas instâncias durante a execução.
Este tipo específico de tipo de diagrama UML é extremamente valioso para depurar estruturas de dados complexas, explicar estados de relações altamente aninhadas (como grafos de árvores pai-filho) ou verificar se um padrão de design de engenharia se comporta conforme esperado sob variáveis de casos extremos. Com VPasCode, você pode criar relações de objetos em tempo real de forma limpa, dispensando completamente ferramentas manuais de desenho de caixas.
Guia de Sintaxe Básica: Elementos e Construções
Para criar um diagrama de objetos UML preciso e compatível com padrões no PlantUML, você precisa entender a instanciação de objetos, atribuições de valores de campos e mapeamentos de ligações entre instâncias.
1. Instanciando Objetos (Nome vs. Tipos de Classe)
Objetos são declarados usando a objectpalavra-chave. Com base nas convenções padrão de modelagem UML, você define um objeto fornecendo seu nome exclusivo de instância, seguido de dois pontos e o tipo de modelo da classe pai:
object "currentUser : Account" como activeUser ![]()
Dica Profissional: Sempre use a comopalavra-chave para mapear uma declaração longa de nome de instância para um ID curto e interno (como activeUser) para tornar o desenho das linhas de ligação rápido e limpo.
2. Atribuindo Estados de Campo e Valores em Tempo de Execução
Para preencher seus objetos com valores de dados de teste, abra um bloco de corpo usando chaves curvas no final e escreva suas atribuições de chave-valor de dados em linhas separadas. Diferentemente das definições de classe, não acrescente tipos de dados aqui—use valores operacionais reais:
object "adminCart : ShoppingCart" como cart1 {
cartId = "CART-9081"
itemCount = 3
isTaxExempt = false
} 
3. Mapeamento de Ligações de Instâncias
Conexões entre instâncias concretas em um diagrama de objetos representam ponteiros de memória do mundo real, em vez de padrões estruturais abstratos. Você mapeia essas ligações usando traços duplos sólidos (“--). Você também pode anexar rótulos de string para indicar o contexto funcional da ligação:
activeUser -- cart1 : "possui e modifica" 
Melhores Práticas para Mapas de Objetos Práticos
- Concentre-se no que importa: Não liste todos os campos individuais de uma definição de classe. Inclua apenas os valores de variáveis-chave que explicam diretamente o estado de tempo de execução específico ou o erro que você está tentando ilustrar.
- Mantenha as ligações neutras: Evite usar triângulos de herança ou losangos de composição rígidos em um diagrama de objetos. Use linhas simples e planas de relacionamento (
--) ou pontas de seta básicas (-->) para mostrar referências. - Alinhe iterações horizontalmente: Se você estiver mapeando uma lista de array ou uma sequência de objetos históricos, use setas de navegação horizontal como
-right->para forçar as instâncias a serem renderizadas limpidamente em uma única linha.
Exemplos Reais de Diagramas de Objetos PlantUML
Exemplo 1: Estado da Sessão de Token de Identidade (Mapeamentos de Valores Concretos)
Este modelo mapeia um estado de autorização de segurança ativo, demonstrando como um único usuário autenticado se conecta a múltiplas instâncias de sessão ativas de máquina específicas com variáveis de dados distintas.
@startuml
objeto "targetUser : UserAccount" como user {
userId = 1042
username = "dev_admin"
status = "ACTIVE"
}
objeto "sessionMobile : UserSession" como session1 {
sessionId = "SESS-AAA-99"
deviceOS = "iOS 17"
ipAddress = "192.168.1.54"
}
objeto "sessionDesktop : UserSession" como session2 {
sessionId = "SESS-BBB-11"
deviceOS = "macOS 14"
ipAddress = "72.44.12.102"
}
' Estabelecer ligações em tempo de execução
user -- session1 : "autenticado em"
user -- session2 : "autenticado em"
@enduml 
Análise de sintaxe: Este layout captura um cenário definitivo no código de produção: um registro de usuário específico (ID 1042) gerando duas instâncias de sessão em tempo de execução completamente separadas simultaneamente. Cada contêiner de sessão rastreia seus próprios parâmetros de layout de metadados isolados.
Exemplo 2: Estado de Cumprimento de Nota Fiscal de Comércio Eletrônico (Mapas de Múltiplas Entidades)
Este projeto avançado do sistema mapeia um gráfico de transação financeira concluída. Ele mostra exatamente como os registros de pedidos, os registros de transações e os pacotes do armazém se relacionam entre si em um ponto específico no tempo.
@startuml
objeto "buyerProfile : Customer" como customer {
email = "[email protected]"
tier = "VIP"
}
objeto "activeOrder : Order" como order {
orderNumber = "#99122"
subtotal = 149.99
currency = "USD"
}
objeto "stripeTransaction : LedgerEntry" como ledger {
referenceId = "ch_3Mv8x"
gatewayStatus = "SUCCESS"
settledAt = "2026-05-26"
}
objeto "packageA : Shipment" como ship1 {
trackingCode = "1Z999AA1"
carrier = "UPS"
weightKg = 1.4
}
objeto "packageB : Shipment" como ship2 {
trackingCode = "1Z999AA2"
carrier = "UPS"
weightKg = 0.8
}
' Ligações de execução estruturais
customer -- order : "enviado"
order -- ledger : "financiado por"
order -- ship1 : "cumprido via"
order -- ship2 : "cumprido via"
@enduml 
Análise de sintaxe: Este modelo fornece uma visão altamente estruturada de um estado complexo do sistema. Mostra um único pedido vinculado a um registro de transação de checkout bem-sucedido, dividido em dois arquivos de envio físicos distintos. Esse nível de detalhe o torna um excelente plano para auditoria de estruturas de dados e processos do sistema.