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


🧭 Navegação Pedagógica


🎯 Nível 1: Fundamentos

Problema 09.1 — Herança com extends, super() e Sobrescrita com @Override

Contexto: Herança com extends, super() e Sobrescrita com @Override no contexto de Herança, Polimorfismo, Classes Abstratas e Upcasting/Downcasting.

Requisitos de Execução:

  1. Criar classe ContaEspecial herdando de Conta e sobrescrevendo método de saque com limite.

Resultado Esperado

Herança aplicada com invocação de construtor base via super().

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_09_1_SeuNome
  2. Envie na tarefa: Atividade Cap 09 - Herança, Polimorfismo, Classes Abstratas e Upcasting/Downcasting
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;

public class ContaCorrente {
    protected double saldo;
    public ContaCorrente(double saldo) { this.saldo = saldo; }
    public void sacar(double v) { saldo -= (v + 5.0); }
    public double getSaldo() { return saldo; }
}

🔍 Nível 2: Prática

Problema 09.2 — Polimorfismo e Classes Abstratas com abstract

Contexto: Polimorfismo e Classes Abstratas com abstract no contexto de Herança, Polimorfismo, Classes Abstratas e Upcasting/Downcasting.

Requisitos de Execução:

  1. Criar classe abstrata Figura e calcular área polimorficamente em lista de figuras.

Resultado Esperado

Método polimórfico invocado através de referência de classe abstrata.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_09_2_SeuNome
  2. Envie na tarefa: Atividade Cap 09 - Herança, Polimorfismo, Classes Abstratas e Upcasting/Downcasting
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;

public abstract class Figura {
    public abstract double area();
}

class Retangulo extends Figura {
    private double l, a;
    public Retangulo(double l, double a) { this.l = l; this.a = a; }
    public double area() { return l * a; }
}

⚡ Nível 3: Integração

Problema 09.3 — Pattern Matching para instanceof no Java 21 (JEP 394)

Contexto: Pattern Matching para instanceof no Java 21 (JEP 394) no contexto de Herança, Polimorfismo, Classes Abstratas e Upcasting/Downcasting.

Requisitos de Execução:

  1. Verificar e extrair tipo derivado em única instrução com if (obj instanceof Retangulo r).

Resultado Esperado

Pattern matching para instanceof simplificando casting com segurança.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_09_3_SeuNome
  2. Envie na tarefa: Atividade Cap 09 - Herança, Polimorfismo, Classes Abstratas e Upcasting/Downcasting
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;

public class InstanceOfDemo {
    public static void imprimirArea(Figura f) {
        if (f instanceof Retangulo r) {
            System.out.println("Area do Retangulo: " + r.area());
        }
    }
}

🏆 Nível 4: Desafio Corporativo

Problema 09.4 — Classes Seladas (Sealed Classes com permits) no Java 21

Contexto: Classes Seladas (Sealed Classes com permits) no Java 21 no contexto de Herança, Polimorfismo, Classes Abstratas e Upcasting/Downcasting.

Requisitos de Execução:

  1. Restringir hierarquia de herança com public abstract sealed class Pagamento permits Pix, Cartao.

Resultado Esperado

Hierarquia selada garantindo controle exaustivo de subclasses em tempo de compilação.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_09_4_SeuNome
  2. Envie na tarefa: Atividade Cap 09 - Herança, Polimorfismo, Classes Abstratas e Upcasting/Downcasting
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;

public abstract sealed class MetodoPagamento permits Pix, Boleto {}
final class Pix extends MetodoPagamento {}
final class Boleto extends MetodoPagamento {}

// Validacao adicional
class ValidadorStatus { public static boolean ok() { return true; } }

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