Instruções Gerais:

  • Resolva as atividades em ordem progressiva de maturidade.
  • Cada nível adiciona requisitos técnicos, tratamento de erros e casos de borda reais.
  • Consulte o gabarito comentado ao final de cada questão para autoavaliação.

🎯 Nível 1: Fundamentos

Problema 05.1 — Hierarquia de Classes, Herança e Polimorfismo em Java

Contexto: Hierarquia de Classes, Herança e Polimorfismo em Java no contexto de Linguagem Java: JVM, POO Avançada, Generics e Streams.

Requisitos de Execução:

  1. Criar classe base abstrata Funcionario com método calcularBonus() sobrescrito em Gerente.

Resultado Esperado

Polimorfismo de métodos executado na JVM.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_05_1_SeuNome
  2. Envie na tarefa: Atividade Cap 05 - Linguagem Java: JVM, POO Avançada, Generics e Streams
🔑 Gabarito de Código & Solução Comentada
abstract class Funcionario {
    protected double salario;
    public Funcionario(double s) { this.salario = s; }
    public abstract double calcularBonus();
}

class Gerente extends Funcionario {
    public Gerente(double s) { super(s); }
    @Override public double calcularBonus() { return this.salario * 0.20; }
}

public class Main {
    public static void main(String[] args) {
        Funcionario g = new Gerente(8000.0);
        System.out.println("Bonus do Gerente: R$ " + g.calcularBonus());
    }
}

🔍 Nível 2: Prática

Problema 05.2 — Programação Funcional com Java Streams API e Lambdas

Contexto: Programação Funcional com Java Streams API e Lambdas no contexto de Linguagem Java: JVM, POO Avançada, Generics e Streams.

Requisitos de Execução:

  1. Filtrar lista de salários acima de 5000, aplicar aumento de 10% e somar o total.

Resultado Esperado

Processamento funcional de coleções com Streams.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_05_2_SeuNome
  2. Envie na tarefa: Atividade Cap 05 - Linguagem Java: JVM, POO Avançada, Generics e Streams
🔑 Gabarito de Código & Solução Comentada
import java.util.List;

public class StreamsDemo {
    public static void main(String[] args) {
        List<Double> salarios = List.of(3000.0, 6000.0, 8500.0);
        double total = salarios.stream()
                .filter(s -> s > 5000.0)
                .mapToDouble(s -> s * 1.10)
                .sum();
        System.out.println("Total processado via Streams: R$ " + total);
    }
}

⚡ Nível 3: Integração

Problema 05.3 — Java Records Modernos com Validação Compacta

Contexto: Java Records Modernos com Validação Compacta no contexto de Linguagem Java: JVM, POO Avançada, Generics e Streams.

Requisitos de Execução:

  1. Modelar imutabilidade com record Cliente(String cpf, String nome, String email).

Resultado Esperado

DTO imutável com métodos `equals`, `hashCode` e `toString` gerados automaticamente.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_05_3_SeuNome
  2. Envie na tarefa: Atividade Cap 05 - Linguagem Java: JVM, POO Avançada, Generics e Streams
🔑 Gabarito de Código & Solução Comentada
public class RecordDemo {
    public record Cliente(String cpf, String nome, String email) {
        public Cliente {
            if (cpf == null || cpf.isBlank()) throw new IllegalArgumentException("CPF obrigatorio");
        }
    }

    public static void main(String[] args) {
        Cliente c = new Cliente("123.456.789-00", "Carlos Silva", "carlos@empresa.com");
        System.out.println("Cliente Record instanciado: " + c.nome());
    }
}

🏆 Nível 4: Desafio Corporativo

Problema 05.4 — Concorrência Massiva com Virtual Threads (Project Loom)

Contexto: Concorrência Massiva com Virtual Threads (Project Loom) no contexto de Linguagem Java: JVM, POO Avançada, Generics e Streams.

Requisitos de Execução:

  1. Executar 10.000 tarefas concorrentes utilizando Executors.newVirtualThreadPerTaskExecutor().

Resultado Esperado

Concorrência de alto throughput com Virtual Threads no Java 21+.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_05_4_SeuNome
  2. Envie na tarefa: Atividade Cap 05 - Linguagem Java: JVM, POO Avançada, Generics e Streams
🔑 Gabarito de Código & Solução Comentada
import java.util.concurrent.Executors;

public class VirtualThreadsDemo {
    public static void main(String[] args) {
        try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
            for (int i = 1; i <= 5; i++) {
                final int id = i;
                executor.submit(() -> {
                    System.out.println("Virtual Thread " + id + " executando em tarefa leve.");
                });
            }
        }
        System.out.println("Todas as Virtual Threads concluidas com sucesso.");
    }
}