Aula 11 - Diagrama de Estados 🔄
Módulo
MÓDULO 3 – DIAGRAMAS COMPORTAMENTAIS UML
1. Fundamentos do Diagrama de Estados 📚
Nesta aula, estudaremos o Diagrama de Estados (State Machine), que modela o comportamento dinâmico de objetos em resposta a eventos.
🧠 Conceitos Fundamentais
Estado
Condição ou situação na vida de um objeto durante a qual ele satisfaz alguma condição, executa atividade ou aguarda evento.
**Notação**: Retângulo com cantos arredondados
Transição
Mudança de estado causada por evento, podendo ter condição de guarda e ação associada.
**Notação**: Seta rotulada com `evento[guarda]/ação`
Evento
Ocorrência que pode disparar uma transição de estado.
**Tipos**: Chamada, sinal, mudança, tempo
2. Anatomia do Diagrama de Estados 📊
stateDiagram-v2
[*] --> Criado : criar()
Criado --> Ativo : ativar() [condiçõesOK]
Criado --> Cancelado : cancelar()
Ativo --> Suspenso : suspender()
Ativo --> Bloqueado : bloquear() [violacao]
Ativo --> Inativo : desativar()
Suspenso --> Ativo : reativar()
Suspenso --> Cancelado : cancelar()
Bloqueado --> Ativo : desbloquear() [administrador]
Bloqueado --> Cancelado : cancelar()
Inativo --> Ativo : ativar()
Inativo --> Cancelado : cancelar()
Cancelado --> [*]
state Ativo {
[*] --> Normal
Normal --> Premium : upgrade()
Premium --> Normal : downgrade()
} 3. Estados Especiais e Atividades 🔀
Estados Inicial e Final
Estado Inicial
Notação: Círculo preenchido [•]
**Comportamento**: Ponto de entrada da máquina de estados
**Regra**: Apenas uma transição de saída
Estado Final
Notação: Círculo com borda [◎]
**Comportamento**: Terminação da máquina de estados
**Característica**: Nenhuma transição de saída
Atividades em Estados
Entry, Do e Exit
Estado ___________ entry / açãoEntrada do / atividadeContínua exit / açãoSaída
**Entry**: Executada ao **entrar** no estado
**Do**: Executada **durante** a permanência no estado
**Exit**: Executada ao **sair** do estado
4. Transições Complexas 💻
5. Estados Compostos (Aninhados) 🎨
Hierarquia de Estados
Estado Composto
Definição: Estado que contém outros estados (sub-estados)
**Vantagem**: Reduz complexidade e permite reutilização
**Exemplo**:
```
Estado "Ativo"
├── Sub-estado "Funcionando"
└── Sub-estado "Manutenção"
```
Estados Paralelos (Concorrentes)
Regiões Paralelas
Uso: Quando objeto pode estar em múltiplos estados simultaneamente
**Notação**: Estados separados por linha tracejada
**Exemplo**: Telefone pode estar "Ligado" E "Conectado" ao mesmo tempo
6. Eventos e Triggers ⚙️
Tipos de Eventos
Evento de Chamada (Call Event)
Formato: nomeOperacao(parametros)
**Disparo**: Invocação de método ou operação
**Exemplo**: `sacar(valor)`, `login(usuario, senha)`
Evento de Sinal (Signal Event)
Formato: nomeDoSinal
**Disparo**: Recebimento de sinal assíncrono
**Exemplo**: `sistemaInicializado`, `falhaDetectada`
Evento de Tempo (Time Event)
Formatos: after(tempo), when(condição)
**Disparo**: Passagem de tempo ou condição temporal
**Exemplo**: `after(30 seg)`, `when(dataVencimento < hoje)`
Evento de Mudança (Change Event)
Formato: when(condição)
**Disparo**: Quando condição se torna verdadeira
**Exemplo**: `when(temperatura > 80)`, `when(saldo < 0)`
7. Aplicacões Práticas 🏢
Quando Usar Diagramas de Estados
!!! success "Ideal Para" - Objetos reativos: Respondem a eventos externos - Protocolos: Sequências de interação bem definidas - Interfaces de usuário: Botões, janelas, formulários - Dispositivos: Equipamentos com estados óbvios
**Exemplos**: Conta bancária, processamento de pedidos, elevador
!!! warning "Evitar Para" - Objetos passivos: Apenas armazenam dados - Operações simples: Cálculos diretos sem transições - Fluxos de controle: Use diagrama de atividades
**Exemplos**: Endereço, produto (sem ciclo de vida), relatórios
Integração com Outros Diagramas
!!! tip "Relação com Classes" - Estados correspondem a valores de atributos - Transições correspondem a métodos que alteram estado - Validação: Métodos devem respeitar transições válidas
5. Mini-Projeto Prático 🚀
Cenário: Ciclo de vida de um Ar-Condicionado Inteligente.
Desafio: 1. Identifique 3 estados básicos: Desligado, Resfriando, Ventilando. 2. Adicione um estado de "Manutenção" que só pode ser acessado via código técnico. 3. Defina o evento que faz o aparelho passar de "Resfriando" para "Ventilando" (ex: Temperatura Atingida).
🎯 Materiais e Prática
-
Slides Interativos --- Acesse a apresentação visual da aula. Ver Slides
-
Testar Conhecimento --- Responda ao Quiz da aula para fixar os conceitos. Responder Quiz
-
Exercícios Progressivos --- Pratique com 5 exercícios de fixação e desafio. Praticar
-
Mini-Projeto --- Aplique a análise no seu projeto de referência. Ver Projeto
Próxima Aula: Diagrama de Componentes ➡️