Pular para conteúdo

Exercícios: Aula 11 - Diagrama de Estados 📝

Entenda as mudanças de comportamento de um objeto conforme o tempo passa.


1. O que é um Estado? (Básico 1)

Contexto: Nem tudo no sistema precisa de um diagrama de estados, apenas objetos com ciclos de vida complexos.

Pergunta: Defina o conceito de Estado para um objeto e dê um exemplo de três estados de um "Pedido de Venda".

2. Causas de Mudança (Básico 2)

Contexto: Objetos não mudam de estado sozinhos; algo deve acontecer.

Pergunta: Qual a diferença entre uma Transição e um Evento?

3. Condições de Guarda (Intermediário 1)

Contexto: Às vezes a transição só pode ocorrer se uma regra for atendida.

Pergunta: O que é uma Guard Condition e como ela é representada visualmente na UML?

4. Pseudo-estados (Intermediário 2)

Contexto: Existem símbolos que não são estados reais, mas ajudam na lógica.

Pergunta: Identifique o símbolo de Início, Fim e do Histórico no Diagrama de Estados. Para que serve o histórico?

5. Desafio: Modelando o Ciclo de Vida (Desafio)

Contexto: Um sensor de temperatura está em estado "Inativo". Ao ser ligado (liga()), ele entra em "Monitorando". Se a temperatura atingir 100ºC, ele passa para "Alerta". Se for desligado (desliga()), volta para "Inativo" a partir de qualquer estado.

Pergunta: Desenhe esse diagrama de estados simplificado, identificando onde as condições de guarda seriam necessárias.

---

📚 Gabarito e Soluções Comentadas

Gabarito Explicado Respostas e explicações para os exercícios da **Aula 11**. --- ### ✅ 1. O que é um Estado? (Básico) **Resposta Sugerida:** Um **Estado** é uma condição ou situação na vida de um objeto durante a qual ele satisfaz alguma condição ou aguarda algum evento. --- ### ✅ 2. Transição e Evento (Básico) **Resposta Sugerida:** Uma **Transição** é a mudança de um estado para outro. Ela é disparada por um **Evento** (algo que acontece, como clicar em um botão ou atingir um tempo limite). --- ### ✅ 3. Guards / Condições (Intermediário) **Explicação:** Uma **Guard Condition** é um teste booleano colocado entre colchetes `[condição]`. A transição só ocorre se o evento disparar E a guard for verdadeira (ex: `sacar() [saldo > valor]`). --- ### ✅ 4. Pseudo-estados (Intermediário) **Conceitos:** * **Início (Círculo Cheio):** Onde a vida do objeto começa. * **Fim (Alvo):** Onde o ciclo de vida se encerra. * **Histórico (H):** Lembra o último estado antes de uma interrupção. --- ### ✅ 5. Desafio: Lâmpada Inteligente (Desafio) **Resolução Sugerida:**
stateDiagram-v2
    [*] --> Desligada
    Desligada --> Ligada : ligar()
    Ligada --> Desligada : desligar()
    Ligada --> Queimada : [uso > 1000h]
    Desligada --> Queimada : [tempo > 5 anos]
    Queimada --> [*] : descartar()
---