🔄 CAPÍTULO 15: DIAGRAMAS DINÂMICOS (ESTADOS E ATIVIDADES)
Enquanto o Diagrama de Sequência foca na troca de mensagens, os diagramas dinâmicos focam no Comportamento (Estados) e no Processo (Atividades). Eles são essenciais para modelar regras de negócio complexas. 🛡️🧩
🎯 Objetivo do Capítulo
Compreender as transições de situação de um objeto (Máquina de Estados) e o fluxo de controle de um algoritmo ou processo organizacional (Diagrama de Atividades).
🏢 O Cenário Corporativo (TecProExpress Logistics)
Na TecProExpress, o sistema de entrega de encomendas tem regras rígidas. Um pacote não pode ser marcado como "Entregue" se antes não passou pelo estado "Em Trânsito". Além disso, o processo de "Triagem" envolve várias sub-etapas paralelas.
"Seu desafio é modelar o ciclo de vida da encomenda. O que acontece se o cliente não estiver em casa? O pacote volta para qual estado? Use o Diagrama de Estados para garantir que o programador não permita 'pular etapas' no código."
🧠 Diagrama de Máquina de Estados
Foca nas transições de situação que um objeto único sofre. É o "Status" do banco de dados ganhando vida visual.
📊 Lifecycle de um Pedido (TecProExpress)
stateDiagram-v2
[*] --> Aberto
Aberto --> AguardandoPagamento : Checkout concluído
AguardandoPagamento --> Pago : Confirmação Gateway
AguardandoPagamento --> Cancelado : Timeout 24h
Pago --> PreparandoEnvio : NF-e Gerada
PreparandoEnvio --> Enviado : Coleta Transportadora
Enviado --> Entregue : Protocolo Assinado
Entregue --> [*]
Cancelado --> [*]
🏗️ Diagrama de Atividades (Fluxogramas)
Descreve o fluxo de controle de um processo complexo. É um fluxograma inteligente com suporte a decisões e paralelismo.
| Componente | Visual e Propósito |
|---|---|
| Atividade | Ação executada (Ex: "Calcular Frete"). |
| Decisão (Losango) | Bifurcação (Sim/Não). |
| Sincronização (Barra) | Atividades simultâneas (Parallel Processing). |
📊 Fluxo de Checkout e Pagamento
graph TD
A(["INÍCIO"]) --> B["Realizar Checkout"]
B --> C{"Pagamento Aprovado?"}
C -- "Sim" --> D["Gerar Ordem de Serviço"]
C -- "Não" --> E["Notificar Falha"]
D --> F(["FIM"])
E --> B
style B fill:#e3f2fd,stroke:#1e88e5
style D fill:#f1f8e9,stroke:#558b2f
💡 Checkpoint de Lógica
[!IMPORTANT] Reflexão Profissional: Qual a principal diferença entre um Diagrama de Atividades e um de Sequência? (Resposta: O de Atividades foca no Fluxo de Lógica/Algoritmo, enquanto o de Sequência foca na Troca de Mensagens entre Objetos). Use o de Atividades para processos de negócio e o de Sequência para arquitetura técnica. 🧠🛡️