Spec Sistemas Com Java • Trilha Progressiva em 4 Níveis


🧭 Navegação Pedagógica


🎯 Nível 1: Fundamentos

Problema 08.1 — Enum com Atributos, Construtor e Métodos Customizados

Contexto: Enum com Atributos, Construtor e Métodos Customizados no contexto de Modelagem Rica de Domínio: Enumerações (enum) e Composição.

Requisitos de Execução:

  1. Criar enum StatusPedido contendo código numérico e descrição formatada.

Resultado Esperado

Enum instanciado com atributos de domínio ricos.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_08_1_SeuNome
  2. Envie na tarefa: Atividade Cap 08 - Modelagem Rica de Domínio: Enumerações (enum) e Composição
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;

public enum StatusPedido {
    PENDENTE(1, "Aguardando Pagamento"),
    PROCESSANDO(2, "Em Processamento"),
    FINALIZADO(3, "Pedido Entregue");

    private final int codigo;
    private final String descricao;

    StatusPedido(int c, String d) { this.codigo = c; this.descricao = d; }
    public String getDescricao() { return descricao; }
}

🔍 Nível 2: Prática

Problema 08.2 — Composição de Objetos (Relacionamento Tem-Um)

Contexto: Composição de Objetos (Relacionamento Tem-Um) no contexto de Modelagem Rica de Domínio: Enumerações (enum) e Composição.

Requisitos de Execução:

  1. Modelar classe Pedido composta por Cliente e lista de ItemPedido.

Resultado Esperado

Grafo de objetos montado através de composição orientada a objetos.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_08_2_SeuNome
  2. Envie na tarefa: Atividade Cap 08 - Modelagem Rica de Domínio: Enumerações (enum) e Composição
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;

import java.util.ArrayList;
import java.util.List;

public class Pedido {
    private String cliente;
    private List<String> itens = new ArrayList<>();

    public Pedido(String cliente) { this.cliente = cliente; }
    public void adicionarItem(String item) { itens.add(item); }
    public int getTotalItens() { return itens.size(); }
}

⚡ Nível 3: Integração

Problema 08.3 — Enum com Métodos Abstratos e Comportamentos Polimórficos

Contexto: Enum com Métodos Abstratos e Comportamentos Polimórficos no contexto de Modelagem Rica de Domínio: Enumerações (enum) e Composição.

Requisitos de Execução:

  1. Criar enum OperacaoAritmetica com método abstrato aplicar(double x, double y) implementado por cada constante.

Resultado Esperado

Comportamento polimórfico distribuído entre constantes de enum.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_08_3_SeuNome
  2. Envie na tarefa: Atividade Cap 08 - Modelagem Rica de Domínio: Enumerações (enum) e Composição
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;

public enum Operacao {
    SOMA { public double aplicar(double x, double y) { return x + y; } },
    SUBTRACAO { public double aplicar(double x, double y) { return x - y; } };

    public abstract double aplicar(double x, double y);
}

🏆 Nível 4: Desafio Corporativo

Problema 08.4 — Padrão State com Enums para Transições de Estado

Contexto: Padrão State com Enums para Transições de Estado no contexto de Modelagem Rica de Domínio: Enumerações (enum) e Composição.

Requisitos de Execução:

  1. Implementar máquina de estados finita diretamente em enum validando transições permitidas.

Resultado Esperado

Transição de estado validada pelo enum do domínio.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_08_4_SeuNome
  2. Envie na tarefa: Atividade Cap 08 - Modelagem Rica de Domínio: Enumerações (enum) e Composição
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;

public enum FluxoFatura {
    CRIADA, EMITIDA, PAGA;
    public boolean podePagar() { return this == EMITIDA; }
}

⬅️ Voltar ao Índice de Exercícios 📚 Sumário de Tópicos