Os diagramas UML são comumente agrupados em estruturais diagramas, que descrevem de que um sistema é feito, e comportamentais diagramas, que descrevem o que ele faz. Os exemplos abaixo usam um único cenário de loja online para que possam ser comparados e adaptados. O UML 2.5.1 é a especificação formal referenciada aqui.
O PlantUML renderiza muitas notações UML diretamente. Alguns tipos de diagramas especializados — especialmente perfil, estrutura composta, comunicação e visão geral de interação — podem ser expressos usando uma aproximação prática do PlantUML em vez de um renderizador de diagramas dedicado. Os comentários identificam esses casos.

Diagramas estruturais
1. Diagrama de classe
Mostra as classes do sistema, seus dados e operações, e relacionamentos como associação, herança e composição. Use-o para discutir modelos de domínio ou design orientado a objetos.

@startuml
class Cliente {
+id: String
+email: String
+placeOrder(): Pedido
}
class Pedido {
+number: String
+status: StatusPedido
+total(): Dinheiro
}
class LinhaPedido {
+quantity: int
+unitPrice: Dinheiro
}
class Produto {
+sku: String
+name: String
}
Cliente "1" -- "0..*" Pedido : faz
Pedido "1" *-- "1..*" LinhaPedido : contém
LinhaPedido "*" --> "1" Produto : refere-se a
@enduml
Leia-o: um cliente pode fazer muitos pedidos; um pedido contém uma ou mais linhas; cada linha refere-se a um produto. O losango preenchido indica composição: o pedido é dono de suas linhas.
2. Diagrama de objeto
Mostra instâncias concretas e links em um momento específico no tempo. É útil para ilustrar dados de exemplo ou explicar um modelo de classe com um cenário específico. No PlantUML, use a notação de objeto.

@startuml
object "alice:Cliente" as alice {
id = C104
email = [email protected]
}
object "pedido:Pedido" as order {
number = O9001
status = PAGO
}
object "linha:LinhaPedido" as line {
quantity = 2
unitPrice = 19.99
}
object "caneca:Produto" as mug {
sku = MUG-01
name = Caneca de viagem
}
alice -- order
order *-- line
line --> mug
@enduml
3. Diagrama de componente
Mostra partes de software implantáveis ou substituíveis e suas dependências. Use-o para comunicar a arquitetura da aplicação e os limites de integração.

@startuml
component "Loja Web" as web
component "Serviço de Pedidos" as orders
component "Adaptador de Pagamento" as payments
database "Banco de Dados de Pedidos" as db
cloud "Provedor de Pagamento" as provider
web --> orders : REST
orders --> db : SQL
orders --> payments : autorizar
payments --> provider : HTTPS
@enduml
4. Diagrama de estrutura composta
Mostra as partes internas de um classificador — como um componente ou classe — e como essas partes se conectam por meio de portas. É útil quando a colaboração interna é mais importante do que a arquitetura do sistema circundante.
O PlantUML não fornece uma sintaxe dedicada para estrutura composta que seja universalmente suportada. Este esboço no estilo de diagrama de classes transmite as partes e as conexões:

@startuml
allowmixing
skinparam componentStyle rectangle
class Car {
}
package "Car" {
component "engine : Engine" as engine {
portout p1
}
component "transmission : Transmission" as trans {
portin p2
portout p3
}
component "wheel : Wheel [4]" as wheels {
portin p4
}
p1 -- p2 : drives
p3 -- p4 : power
}
@enduml Trate isto como um esboço estrutural; ele não mostra portas UML formais ou semântica de conectores.
5. Diagrama de implantação
Mapeia artefatos de software ou serviços para nós de hardware e ambientes de execução. Use-o para explicar onde o software é executado e como os nós de tempo de execução se comunicam.

@startuml
node "Dispositivo do cliente" as client {
artifact "Navegador"
}
node "Nuvem" {
node "Hospedagem da aplicação" as appHost {
artifact "API da Loja"
}
database "Banco de dados de pedidos" as db
}
cloud "Provedor de pagamento externo" as pay
client --> appHost : HTTPS
appHost --> db : SQL
appHost --> pay : HTTPS
@enduml
6. Diagrama de pacotes
Agrupar elementos do modelo em namespaces ou camadas e mostrar dependências entre esses grupos. Use-o para explicar a organização do código e a direção arquitetural.

@startuml
package "store.web" {
class CheckoutController
}
package "store.application" {
class PlaceOrder
}
package "store.domain" {
class Order
class Product
}
package "store.persistence" {
class OrderRepository
}
CheckoutController ..> PlaceOrder
PlaceOrder ..> Order
PlaceOrder ..> OrderRepository
@enduml
7. Diagrama de perfil
Define uma extensão específica de domínio para UML usando estereótipos, valores marcados e restrições. Use-o quando um projeto precisar de um vocabulário de modelagem consistente além do UML padrão.
O PlantUML pode mostrar os conceitos de perfil como um esboço no estilo UML, mas este não é um renderizador dedicado para diagramas de perfil.

@startuml
class "«profile» StoreProfile" as Profile
class "«estereótipo» «Serviço»" as Service
class "«estereótipo» «Repositório»" as Repository
class "«metaclass» Componente" as Component
Profile ..> Service : defines
Profile ..> Repository : defines
Service ..> Component : extends
Repository ..> Component : extends
note right of Service
valor marcado:
owner: String
end note
@enduml
Diagramas comportamentais
8. Diagrama de casos de uso
Mostra atores externos e os objetivos do sistema com os quais interagem. Use-o para estabelecer o escopo e capturar requisitos funcionais em alto nível.

@startuml
direção da esquerda para a direita
ator Cliente
ator "Provedor de Pagamento" como Provedor
retângulo "Loja Online" {
caso de uso "Navegar produtos" como Navegar
caso de uso "Fazer pedido" como Fazer
caso de uso "Pagar pedido" como Pagar
caso de uso "Rastrear pedido" como Rastrear
}
Cliente --> Navegar
Cliente --> Fazer
Cliente --> Rastrear
Provedor --> Pagar
Fazer ..> Pagar : <<incluir>>
@enduml
9. Diagrama de atividade
Modela um fluxo de trabalho: ações, decisões, caminhos paralelos e transferências. Use-o para processos de negócios, procedimentos operacionais ou o fluxo de controle de um algoritmo.

@startuml
início
:Selecionar itens;
:Inserir detalhes de entrega;
:Calcular total;
se (Itens disponíveis?) então (sim)
:Autorizar pagamento;
se (Pagamento aprovado?) então (sim)
:Criar pedido;
:Enviar confirmação;
senão (não)
:Mostrar erro de pagamento;
fimse
senão (não)
:Mostrar itens indisponíveis;
fimse
fim
@enduml
10. Diagrama de máquina de estados
Descreve os estados que uma entidade pode ocupar e os eventos ou condições que causam transições. Use-o quando o comportamento de um objeto depender de seu estado atual.

@startuml
[*] --> Rascunho
Rascunho --> PagamentoPendente : submeter
PagamentoPendente --> Pago : pagamento aprovado
PagamentoPendente --> Cancelado : pagamento recusado
PagamentoPendente --> Cancelado : cliente cancela
Pago --> Enviado : despachar
Enviado --> Entregue : entrega confirmada
Cancelado --> [*]
Entregue --> [*]
@enduml
11. Diagrama de sequência
Mostra as mensagens trocadas entre participantes em ordem temporal. Use-o para descrever um cenário, fluxo de chamadas de API ou interação entre serviços.

@startuml
ator Cliente
participante "Loja Web" como Web
participante "Serviço de Pedidos" como Pedidos
participante "Serviço de Pagamento" como Pagamentos
Cliente -> Web : submeter checkout
Web -> Pedidos : criar pedido
Pedidos -> Pagamentos : autorizar pagamento
Pagamentos --> Pedidos : aprovado
Pedidos --> Web : confirmação de pedido
Web --> Cliente : mostrar confirmação
@enduml
12. Diagrama de comunicação
Destaca quais objetos colaboram e os links entre eles; a numeração das mensagens mostra a ordem das interações. Use-o quando a rede de participantes colaborativos for mais importante do que uma linha do tempo.
O PlantUML não possui um renderizador dedicado para diagramas de comunicação em seu conjunto UML padrão. Este esboço de links de objetos rotula as mensagens com números de sequência:

@startuml
objeto Cliente
objeto LojaWeb
objeto ServiçoPedidos
objeto ServiçoPagamento
Cliente --> LojaWeb : 1: checkout()
LojaWeb --> ServiçoPedidos : 1.1: createOrder()
ServiçoPedidos --> ServiçoPagamento : 1.2: authorize()
ServiçoPagamento --> ServiçoPedidos : 1.3: approved
ServiçoPedidos --> LojaWeb : 1.4: confirmation
@enduml
13. Diagrama de visão geral de interação
Fornece uma visão de alto nível do fluxo de controle de interações, combinando fluxo estilo atividade com referências a cenários de interação. Use-o para mostrar como vários cenários de nível de sequência se encaixam em um processo maior.
Este exemplo de PlantUML usa um diagrama de atividade como visão geral, com nomes de cenários substituindo as interações referenciadas:

@startuml
skinparam conditionStyle InsideDiamond
title Diagrama de Visão Geral de Interação: Sistema de Processamento de Pedidos
start
:Cliente faz pedido;
if (Item em estoque?) then (sim)
partition "sd Sequência de Checkout" {
:Autorizar Pagamento;
:Deduzir Estoque;
}
else (não)
partition "sd Processo de Pedido Pendente" {
:Notificar Cliente;
:Gerar Solicitação ao Fornecedor;
}
endif
fork
partition "sd Sequência de Envio" {
:Empacotar Pedido;
:Enviar para Endereço;
}
fork again
partition "sd Sequência de Faturamento" {
:Gerar Fatura;
:Enviar E-mail de Recibo;
}
end fork
:Fechar Pedido;
stop
@enduml Para trocas de mensagens detalhadas dentro de cada cenário, crie um diagrama de sequência separado.
14. Diagrama de tempo
Mostra mudanças de estado ou valor em relação a um eixo temporal. Use-o para comportamento sensível ao tempo, protocolos, interações de hardware ou requisitos que envolvem durações e prazos.

@startuml
robust "Pedido" as Order
concise "Pagamento" as Payment
@0
Pedido é Rascunho
Pagamento está Inativo
@5
Pedido está Pendente
Pagamento está Processando
@10
Pagamento está Aprovado
@12
Pedido está Confirmado
@enduml
Escolhendo um diagrama
Comece com a pergunta que o diagrama precisa responder:
-
O que está no sistema? Classe, objeto, componente, estrutura composta, pacote, perfil ou implantação.
-
O que o sistema faz? Caso de uso, atividade ou máquina de estados.
-
Como os participantes colaboram? Sequência, comunicação, visão geral de interação ou tempo.
Mantenha cada diagrama focado em um único propósito, use nomes consistentes entre os diagramas e inclua apenas o detalhe necessário para o público e a decisão em questão. Os trechos de PlantUML são pontos de partida: verifique a sintaxe suportada pelo seu renderizador, especialmente para os tipos de diagrama especializados.
This post is also available in Deutsch, English, Español, فارسی, Français, Bahasa Indonesia, 日本語, Polski, Ру́сский, Việt Nam, 简体中文 and 繁體中文.












