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


🧭 Navegação Pedagógica


🎯 Nível 1: Fundamentos

Problema 13.1 — Classe Genérica com Delimitação de Tipos (Bounded Generics)

Contexto: Classe Genérica com Delimitação de Tipos (Bounded Generics) no contexto de Generics (), Wildcards, Set e Map.

Requisitos de Execução:

  1. Criar classe CaixaCalculo<T extends Number> que processe operações matemáticas.

Resultado Esperado

Classe genérica operando com restrição de tipos numéricos.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_13_1_SeuNome
  2. Envie na tarefa: Atividade Cap 13 - Generics (<T>), Wildcards, Set e Map
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;

public class CaixaCalculo<T extends Number> {
    private T valor;
    public CaixaCalculo(T v) { this.valor = v; }
    public double aoQuadrado() { return Math.pow(valor.doubleValue(), 2); }
}

🔍 Nível 2: Prática

Problema 13.2 — Conjuntos com HashSet, TreeSet e LinkedHashSet

Contexto: Conjuntos com HashSet, TreeSet e LinkedHashSet no contexto de Generics (), Wildcards, Set e Map.

Requisitos de Execução:

  1. Comparar deduplicação com HashSet (O(1)), ordenação natural com TreeSet e ordem de inserção com LinkedHashSet.

Resultado Esperado

Conjuntos manipulados conforme requisitos de performance e ordenação.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_13_2_SeuNome
  2. Envie na tarefa: Atividade Cap 13 - Generics (<T>), Wildcards, Set e Map
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;

import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;

public class SetDemo {
    public static void main(String[] args) {
        Set<String> ordenados = new TreeSet<>(Set.of("Zebra", "Abelha", "Macaco"));
        System.out.println("Ordenacao Natural: " + ordenados);
    }
}

⚡ Nível 3: Integração

Problema 13.3 — Tabelas Hash com HashMap e Métodos computeIfAbsent

Contexto: Tabelas Hash com HashMap e Métodos computeIfAbsent no contexto de Generics (), Wildcards, Set e Map.

Requisitos de Execução:

  1. Agrupar itens em mapa utilizando mapa.computeIfAbsent(chave, k -> new ArrayList<>()).add(item).

Resultado Esperado

Agrupamento fluente via computeIfAbsent sem condicionais manuais.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_13_3_SeuNome
  2. Envie na tarefa: Atividade Cap 13 - Generics (<T>), Wildcards, Set e Map
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;

import java.util.*;

public class MapComputeDemo {
    public static void main(String[] args) {
        Map<String, List<String>> categorias = new HashMap<>();
        categorias.computeIfAbsent("TI", k -> new ArrayList<>()).add("Notebook");
        System.out.println("Categorias: " + categorias);
    }
}

🏆 Nível 4: Desafio Corporativo

Problema 13.4 — Princípio PECS (Producer Extends, Consumer Super) com Wildcards (? extends / ? super)

Contexto: Princípio PECS (Producer Extends, Consumer Super) com Wildcards (? extends / ? super) no contexto de Generics (), Wildcards, Set e Map.

Requisitos de Execução:

  1. Demonstrar método que leia de List<? extends Number> (Producer) e grave em List<? super Integer> (Consumer).

Resultado Esperado

Princípio PECS aplicado com máxima flexibilidade de assinaturas genéricas.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_13_4_SeuNome
  2. Envie na tarefa: Atividade Cap 13 - Generics (<T>), Wildcards, Set e Map
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;

import java.util.List;

public class PecsDemo {
    public static double somarLista(List<? extends Number> lista) {
        double soma = 0;
        for (Number n : lista) soma += n.doubleValue();
        return soma;
    }
}

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