From d8c62d835d487ff09b2f48b7c903e77fcd06aee6 Mon Sep 17 00:00:00 2001 From: Milton Luiz Sinhorini Junior Date: Wed, 27 Aug 2025 17:07:52 -0300 Subject: [PATCH 1/9] Exercicio 01 --- src/Generics/Caixa.java | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/Generics/Caixa.java diff --git a/src/Generics/Caixa.java b/src/Generics/Caixa.java new file mode 100644 index 0000000..3f664e2 --- /dev/null +++ b/src/Generics/Caixa.java @@ -0,0 +1,30 @@ +package Generics; + +public class Caixa { + private T conteudo; + + public void set( T conteudo) { + this.conteudo = conteudo; + } + + public T get() { + return conteudo; + } + + public static void main(String[] args) { + // Testando com String + Caixa caixaString = new Caixa<>(); + caixaString.set("Olá, Mundo!"); + System.out.println("Conteúdo da caixa (String): " + caixaString.get()); + + // Testando com Integer + Caixa caixaInt = new Caixa<>(); + caixaInt.set(42); + System.out.println("Conteúdo da caixa (Integer): " + caixaInt.get()); + + // Testando com Double + Caixa caixaDouble = new Caixa<>(); + caixaDouble.set(3.14159); + System.out.println("Conteúdo da caixa (Double): " + caixaDouble.get()); + } +} From 0cdd7e395af361879767ebea7267507088d7c995 Mon Sep 17 00:00:00 2001 From: Milton Luiz Sinhorini Junior Date: Wed, 27 Aug 2025 17:12:01 -0300 Subject: [PATCH 2/9] Exercicio 02 --- src/Generics/{ => Exercicio01}/Caixa.java | 2 +- src/Generics/Exercicio02/ArrayPrinter.java | 28 ++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) rename src/Generics/{ => Exercicio01}/Caixa.java (96%) create mode 100644 src/Generics/Exercicio02/ArrayPrinter.java diff --git a/src/Generics/Caixa.java b/src/Generics/Exercicio01/Caixa.java similarity index 96% rename from src/Generics/Caixa.java rename to src/Generics/Exercicio01/Caixa.java index 3f664e2..fe803e7 100644 --- a/src/Generics/Caixa.java +++ b/src/Generics/Exercicio01/Caixa.java @@ -1,4 +1,4 @@ -package Generics; +package Generics.Exercicio01; public class Caixa { private T conteudo; diff --git a/src/Generics/Exercicio02/ArrayPrinter.java b/src/Generics/Exercicio02/ArrayPrinter.java new file mode 100644 index 0000000..2b3368d --- /dev/null +++ b/src/Generics/Exercicio02/ArrayPrinter.java @@ -0,0 +1,28 @@ +package Generics.Exercicio02; + +public class ArrayPrinter { + // Método genérico para imprimir array de qualquer tipo + public static void printArray(T[] array) { + for (T elemento : array) { + System.out.print(elemento + " "); + } + System.out.println(); + } + + public static void main(String[] args) { + // Testando com array de Integer + Integer[] intArray = {1, 2, 3, 4, 5}; + System.out.print("Array de Integer: "); + printArray(intArray); + + // Testando com array de Double + Double[] doubleArray = {1.1, 2.2, 3.3, 4.4, 5.5}; + System.out.print("Array de Double: "); + printArray(doubleArray); + + // Testando com array de String + String[] stringArray = {"Olá", "Mundo", "Java", "Generics"}; + System.out.print("Array de String: "); + printArray(stringArray); + } +} From debd50431d6fc461381c8b683ce27f913063e4bf Mon Sep 17 00:00:00 2001 From: Milton Luiz Sinhorini Junior Date: Wed, 27 Aug 2025 17:14:06 -0300 Subject: [PATCH 3/9] Exercicio 03 --- src/Generics/Exercicio03/Comparavel.java | 5 ++++ src/Generics/Exercicio03/Produto.java | 33 ++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 src/Generics/Exercicio03/Comparavel.java create mode 100644 src/Generics/Exercicio03/Produto.java diff --git a/src/Generics/Exercicio03/Comparavel.java b/src/Generics/Exercicio03/Comparavel.java new file mode 100644 index 0000000..5909aef --- /dev/null +++ b/src/Generics/Exercicio03/Comparavel.java @@ -0,0 +1,5 @@ +package Generics.Exercicio03; + +public interface Comparavel { + boolean ehMaiorQue(T outro); +} diff --git a/src/Generics/Exercicio03/Produto.java b/src/Generics/Exercicio03/Produto.java new file mode 100644 index 0000000..4c0860a --- /dev/null +++ b/src/Generics/Exercicio03/Produto.java @@ -0,0 +1,33 @@ +package Generics.Exercicio03; + +public class Produto implements Comparavel { + private String nome; + private double preco; + + public Produto(String nome, double preco) { + this.nome = nome; + this.preco = preco; + } + + @Override + public boolean ehMaiorQue(Produto outro) { + return this.preco > outro.preco; + } + + @Override + public String toString() { + return nome + " (R$ " + String.format("%.2f", preco) + ")"; + } + + public static void main(String[] args) { + Produto produto1 = new Produto("Notebook", 3500.00); + Produto produto2 = new Produto("Smartphone", 2500.00); + + System.out.println(produto1 + " é mais caro que " + produto2 + "? " + + produto1.ehMaiorQue(produto2)); + + System.out.println(produto2 + " é mais caro que " + produto1 + "? " + + produto2.ehMaiorQue(produto1)); + } +} + From 2528fe34b2b166fba5f57d90f08625d6a70584de Mon Sep 17 00:00:00 2001 From: Milton Luiz Sinhorini Junior Date: Wed, 27 Aug 2025 17:15:35 -0300 Subject: [PATCH 4/9] Exercicio 04 --- src/Generics/Exercicio04/MaxFinder.java | 35 +++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/Generics/Exercicio04/MaxFinder.java diff --git a/src/Generics/Exercicio04/MaxFinder.java b/src/Generics/Exercicio04/MaxFinder.java new file mode 100644 index 0000000..efb965e --- /dev/null +++ b/src/Generics/Exercicio04/MaxFinder.java @@ -0,0 +1,35 @@ +package Generics.Exercicio04; + +import java.util.List; + +public class MaxFinder { + // Método genérico para encontrar o maior elemento em uma lista de Comparables + public static > T max(List lista) { + if (lista == null || lista.isEmpty()) { + throw new IllegalArgumentException("A lista não pode ser nula ou vazia"); + } + + T max = lista.get(0); + for (T elemento : lista) { + if (elemento.compareTo(max) > 0) { + max = elemento; + } + } + return max; + } + + public static void main(String[] args) { + // Testando com Integer + List numeros = List.of(10, 5, 8, 15, 3); + System.out.println("Maior número: " + max(numeros)); + + // Testando com Double + List decimais = List.of(3.14, 2.71, 1.618, 2.718); + System.out.println("Maior decimal: " + max(decimais)); + + // Testando com String + List palavras = List.of("banana", "abacaxi", "laranja", "uva"); + System.out.println("Última palavra em ordem alfabética: " + max(palavras)); + } +} + From 0ce2efe8c92f9bc3109202097535f4d7d0554338 Mon Sep 17 00:00:00 2001 From: Milton Luiz Sinhorini Junior Date: Wed, 27 Aug 2025 17:18:13 -0300 Subject: [PATCH 5/9] Exercicio 05 --- src/Generics/Exercicio05/Par.java | 42 +++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/Generics/Exercicio05/Par.java diff --git a/src/Generics/Exercicio05/Par.java b/src/Generics/Exercicio05/Par.java new file mode 100644 index 0000000..174aba8 --- /dev/null +++ b/src/Generics/Exercicio05/Par.java @@ -0,0 +1,42 @@ +package Generics.Exercicio05; + +public class Par { + private K chave; + private V valor; + + public Par(K chave, V valor) { + this.chave = chave; + this.valor = valor; + } + + public K getChave() { + return chave; + } + + public V getValor() { + return valor; + } + + @Override + public String toString() { + return "[" + chave + ": " + valor + "]"; + } + + public static void main(String[] args) { + // Criando uma lista de pares representando alunos (matrícula, nome) + java.util.List> alunos = new java.util.ArrayList<>(); + + // Adicionando alguns alunos + alunos.add(new Par<>(1001, "Ana Silva")); + alunos.add(new Par<>(1002, "Carlos Oliveira")); + alunos.add(new Par<>(1003, "Maria Santos")); + alunos.add(new Par<>(1004, "João Pereira")); + + // Imprimindo todos os pares + System.out.println("Lista de Alunos (Matrícula: Nome):"); + for (Par aluno : alunos) { + System.out.println(aluno); + } + } +} + From 20fabce1f8e915328e700da69ebe407a74a09c27 Mon Sep 17 00:00:00 2001 From: Milton Luiz Sinhorini Junior Date: Wed, 27 Aug 2025 17:19:01 -0300 Subject: [PATCH 6/9] Exercicio 06 --- .../Exercicio06/ImpressorNumeros.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/Generics/Exercicio06/ImpressorNumeros.java diff --git a/src/Generics/Exercicio06/ImpressorNumeros.java b/src/Generics/Exercicio06/ImpressorNumeros.java new file mode 100644 index 0000000..3b2ca0f --- /dev/null +++ b/src/Generics/Exercicio06/ImpressorNumeros.java @@ -0,0 +1,36 @@ +package Generics.Exercicio06; + +import java.util.List; + +public class ImpressorNumeros { + // Método que aceita uma lista de qualquer tipo que seja Number ou seus subtipos + public static void imprimirNumeros(List lista) { + for (Number numero : lista) { + System.out.print(numero + " "); + } + System.out.println(); + } + + public static void main(String[] args) { + // Testando com lista de Integer + List inteiros = List.of(1, 2, 3, 4, 5); + System.out.print("Lista de Integer: "); + imprimirNumeros(inteiros); + + // Testando com lista de Double + List decimais = List.of(1.5, 2.7, 3.1, 4.9); + System.out.print("Lista de Double: "); + imprimirNumeros(decimais); + + // Testando com lista de Float + List floats = List.of(1.1f, 2.2f, 3.3f, 4.4f); + System.out.print("Lista de Float: "); + imprimirNumeros(floats); + + // Testando com lista de Long + List longos = List.of(1000L, 2000L, 3000L); + System.out.print("Lista de Long: "); + imprimirNumeros(longos); + } +} + From 60c264acd095d9e430dc0379734607e2577ffdc1 Mon Sep 17 00:00:00 2001 From: Milton Luiz Sinhorini Junior Date: Wed, 27 Aug 2025 17:19:39 -0300 Subject: [PATCH 7/9] Exercicio 07 --- src/Generics/Exercicio07/Pilha.java | 68 +++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/Generics/Exercicio07/Pilha.java diff --git a/src/Generics/Exercicio07/Pilha.java b/src/Generics/Exercicio07/Pilha.java new file mode 100644 index 0000000..e8729ed --- /dev/null +++ b/src/Generics/Exercicio07/Pilha.java @@ -0,0 +1,68 @@ +package Generics.Exercicio07; + +import java.util.ArrayList; +import java.util.EmptyStackException; +import java.util.List; + +public class Pilha { + private List elementos; + private int topo; + + public Pilha() { + this.elementos = new ArrayList<>(); + this.topo = -1; + } + + public void push(T elemento) { + elementos.add(elemento); + topo++; + } + + public T pop() { + if (isEmpty()) { + throw new EmptyStackException(); + } + T elemento = elementos.get(topo); + elementos.remove(topo--); + return elemento; + } + + public T peek() { + if (isEmpty()) { + throw new EmptyStackException(); + } + return elementos.get(topo); + } + + public boolean isEmpty() { + return topo == -1; + } + + public int size() { + return topo + 1; + } + + public static void main(String[] args) { + // Testando com Integer + System.out.println("=== Testando Pilha de Integer ==="); + Pilha pilhaInt = new Pilha<>(); + pilhaInt.push(10); + pilhaInt.push(20); + pilhaInt.push(30); + System.out.println("Topo: " + pilhaInt.peek()); // Deve mostrar 30 + System.out.println("Tamanho: " + pilhaInt.size()); // Deve mostrar 3 + System.out.println("Removido: " + pilhaInt.pop()); // Deve remover 30 + System.out.println("Novo topo: " + pilhaInt.peek()); // Deve mostrar 20 + + // Testando com String + System.out.println("\n=== Testando Pilha de String ==="); + Pilha pilhaStr = new Pilha<>(); + pilhaStr.push("Primeiro"); + pilhaStr.push("Segundo"); + pilhaStr.push("Terceiro"); + System.out.println("Topo: " + pilhaStr.peek()); // Deve mostrar "Terceiro" + System.out.println("Tamanho: " + pilhaStr.size()); // Deve mostrar 3 + System.out.println("Removido: " + pilhaStr.pop()); // Deve remover "Terceiro" + System.out.println("Novo topo: " + pilhaStr.peek()); // Deve mostrar "Segundo" + } +} From d92edff59d4bdcaa2124631be51e46a8fa1b6746 Mon Sep 17 00:00:00 2001 From: Milton Luiz Sinhorini Junior Date: Wed, 27 Aug 2025 17:24:01 -0300 Subject: [PATCH 8/9] Exercicio 08 --- src/Generics/Exercicio08/Cliente.java | 4 ++++ src/Generics/Exercicio08/Produto.java | 4 ++++ src/Generics/Exercicio08/Repositorio.java | 4 ++++ src/Generics/Exercicio08/RepositorioCliente.java | 4 ++++ src/Generics/Exercicio08/RepositorioMemoria.java | 4 ++++ src/Generics/Exercicio08/RepositorioProduto.java | 4 ++++ src/Generics/Exercicio08/TesteRepositorio.java | 4 ++++ 7 files changed, 28 insertions(+) create mode 100644 src/Generics/Exercicio08/Cliente.java create mode 100644 src/Generics/Exercicio08/Produto.java create mode 100644 src/Generics/Exercicio08/Repositorio.java create mode 100644 src/Generics/Exercicio08/RepositorioCliente.java create mode 100644 src/Generics/Exercicio08/RepositorioMemoria.java create mode 100644 src/Generics/Exercicio08/RepositorioProduto.java create mode 100644 src/Generics/Exercicio08/TesteRepositorio.java diff --git a/src/Generics/Exercicio08/Cliente.java b/src/Generics/Exercicio08/Cliente.java new file mode 100644 index 0000000..9f9f2e2 --- /dev/null +++ b/src/Generics/Exercicio08/Cliente.java @@ -0,0 +1,4 @@ +package Generics.Exercicio08; + +public class Cliente { +} diff --git a/src/Generics/Exercicio08/Produto.java b/src/Generics/Exercicio08/Produto.java new file mode 100644 index 0000000..4081787 --- /dev/null +++ b/src/Generics/Exercicio08/Produto.java @@ -0,0 +1,4 @@ +package Generics.Exercicio08; + +public class Produto { +} diff --git a/src/Generics/Exercicio08/Repositorio.java b/src/Generics/Exercicio08/Repositorio.java new file mode 100644 index 0000000..061f394 --- /dev/null +++ b/src/Generics/Exercicio08/Repositorio.java @@ -0,0 +1,4 @@ +package Generics.Exercicio08; + +public interface Repositorio { +} diff --git a/src/Generics/Exercicio08/RepositorioCliente.java b/src/Generics/Exercicio08/RepositorioCliente.java new file mode 100644 index 0000000..eb0c514 --- /dev/null +++ b/src/Generics/Exercicio08/RepositorioCliente.java @@ -0,0 +1,4 @@ +package Generics.Exercicio08; + +public class RepositorioCliente { +} diff --git a/src/Generics/Exercicio08/RepositorioMemoria.java b/src/Generics/Exercicio08/RepositorioMemoria.java new file mode 100644 index 0000000..239d5eb --- /dev/null +++ b/src/Generics/Exercicio08/RepositorioMemoria.java @@ -0,0 +1,4 @@ +package Generics.Exercicio08; + +public class RepositorioMemoria { +} diff --git a/src/Generics/Exercicio08/RepositorioProduto.java b/src/Generics/Exercicio08/RepositorioProduto.java new file mode 100644 index 0000000..b0bc9ab --- /dev/null +++ b/src/Generics/Exercicio08/RepositorioProduto.java @@ -0,0 +1,4 @@ +package Generics.Exercicio08; + +public class RepositorioProduto { +} diff --git a/src/Generics/Exercicio08/TesteRepositorio.java b/src/Generics/Exercicio08/TesteRepositorio.java new file mode 100644 index 0000000..d63673b --- /dev/null +++ b/src/Generics/Exercicio08/TesteRepositorio.java @@ -0,0 +1,4 @@ +package Generics.Exercicio08; + +public class TesteRepositorio { +} From 0aaeea7d468ccd7d385307c387f065d7f6d8b124 Mon Sep 17 00:00:00 2001 From: Milton Luiz Sinhorini Junior Date: Wed, 27 Aug 2025 17:24:11 -0300 Subject: [PATCH 9/9] Exercicio 08 --- src/Generics/Exercicio08/Cliente.java | 21 +++++++ src/Generics/Exercicio08/Produto.java | 23 ++++++- src/Generics/Exercicio08/Repositorio.java | 9 ++- .../Exercicio08/RepositorioCliente.java | 26 +++++++- .../Exercicio08/RepositorioMemoria.java | 19 +++++- .../Exercicio08/RepositorioProduto.java | 26 +++++++- .../Exercicio08/TesteRepositorio.java | 62 +++++++++++++++++++ 7 files changed, 179 insertions(+), 7 deletions(-) diff --git a/src/Generics/Exercicio08/Cliente.java b/src/Generics/Exercicio08/Cliente.java index 9f9f2e2..289fea3 100644 --- a/src/Generics/Exercicio08/Cliente.java +++ b/src/Generics/Exercicio08/Cliente.java @@ -1,4 +1,25 @@ package Generics.Exercicio08; public class Cliente { + private int id; + private String nome; + private String email; + + public Cliente(String nome, String email) { + this.nome = nome; + this.email = email; + } + + // Getters e Setters + public int getId() { return id; } + public void setId(int id) { this.id = id; } + public String getNome() { return nome; } + public void setNome(String nome) { this.nome = nome; } + public String getEmail() { return email; } + public void setEmail(String email) { this.email = email; } + + @Override + public String toString() { + return String.format("Cliente [id=%d, nome=%s, email=%s]", id, nome, email); + } } diff --git a/src/Generics/Exercicio08/Produto.java b/src/Generics/Exercicio08/Produto.java index 4081787..2312fe7 100644 --- a/src/Generics/Exercicio08/Produto.java +++ b/src/Generics/Exercicio08/Produto.java @@ -1,4 +1,25 @@ package Generics.Exercicio08; public class Produto { -} + private int id; + private String nome; + private double preco; + + public Produto(String nome, double preco) { + this.nome = nome; + this.preco = preco; + } + + // Getters e Setters + public int getId() { return id; } + public void setId(int id) { this.id = id; } + public String getNome() { return nome; } + public void setNome(String nome) { this.nome = nome; } + public double getPreco() { return preco; } + public void setPreco(double preco) { this.preco = preco; } + + @Override + public String toString() { + return String.format("Produto [id=%d, nome=%s, preco=R$%.2f]", id, nome, preco); + } +} \ No newline at end of file diff --git a/src/Generics/Exercicio08/Repositorio.java b/src/Generics/Exercicio08/Repositorio.java index 061f394..2c4fcab 100644 --- a/src/Generics/Exercicio08/Repositorio.java +++ b/src/Generics/Exercicio08/Repositorio.java @@ -1,4 +1,9 @@ package Generics.Exercicio08; -public interface Repositorio { -} +import java.util.List; + +public interface Repositorio { + void salvar(T obj); + T buscarPorId(ID id); + List listarTodos(); +} \ No newline at end of file diff --git a/src/Generics/Exercicio08/RepositorioCliente.java b/src/Generics/Exercicio08/RepositorioCliente.java index eb0c514..7345fdc 100644 --- a/src/Generics/Exercicio08/RepositorioCliente.java +++ b/src/Generics/Exercicio08/RepositorioCliente.java @@ -1,4 +1,28 @@ package Generics.Exercicio08; -public class RepositorioCliente { +import java.util.List; +import java.util.stream.Collectors; + +public class RepositorioCliente extends RepositorioMemoria { + + @Override + public void salvar(Cliente cliente) { + cliente.setId(proximoId++); + super.salvar(cliente); + } + + @Override + public Cliente buscarPorId(Integer id) { + return itens.stream() + .filter(c -> c.getId() == id) + .findFirst() + .orElse(null); + } + + // Método adicional para buscar clientes por nome (exemplo de método específico) + public List buscarPorNome(String nome) { + return itens.stream() + .filter(c -> c.getNome().toLowerCase().contains(nome.toLowerCase())) + .collect(Collectors.toList()); + } } diff --git a/src/Generics/Exercicio08/RepositorioMemoria.java b/src/Generics/Exercicio08/RepositorioMemoria.java index 239d5eb..bb1c4b4 100644 --- a/src/Generics/Exercicio08/RepositorioMemoria.java +++ b/src/Generics/Exercicio08/RepositorioMemoria.java @@ -1,4 +1,19 @@ package Generics.Exercicio08; -public class RepositorioMemoria { -} +import java.util.ArrayList; +import java.util.List; + +public abstract class RepositorioMemoria implements Repositorio { + protected List itens = new ArrayList<>(); + protected int proximoId = 1; + + @Override + public void salvar(T obj) { + itens.add(obj); + } + + @Override + public List listarTodos() { + return new ArrayList<>(itens); + } +} \ No newline at end of file diff --git a/src/Generics/Exercicio08/RepositorioProduto.java b/src/Generics/Exercicio08/RepositorioProduto.java index b0bc9ab..1971cb2 100644 --- a/src/Generics/Exercicio08/RepositorioProduto.java +++ b/src/Generics/Exercicio08/RepositorioProduto.java @@ -1,4 +1,28 @@ package Generics.Exercicio08; -public class RepositorioProduto { +import java.util.List; +import java.util.stream.Collectors; + +public class RepositorioProduto extends RepositorioMemoria { + + @Override + public void salvar(Produto produto) { + produto.setId(proximoId++); + super.salvar(produto); + } + + @Override + public Produto buscarPorId(Integer id) { + return itens.stream() + .filter(p -> p.getId() == id) + .findFirst() + .orElse(null); + } + + // Método adicional para buscar produtos por nome (exemplo de método específico) + public List buscarPorNome(String nome) { + return itens.stream() + .filter(p -> p.getNome().toLowerCase().contains(nome.toLowerCase())) + .collect(Collectors.toList()); + } } diff --git a/src/Generics/Exercicio08/TesteRepositorio.java b/src/Generics/Exercicio08/TesteRepositorio.java index d63673b..73eb66d 100644 --- a/src/Generics/Exercicio08/TesteRepositorio.java +++ b/src/Generics/Exercicio08/TesteRepositorio.java @@ -1,4 +1,66 @@ package Generics.Exercicio08; +import java.util.List; + public class TesteRepositorio { + public static void main(String[] args) { + // Testando Repositório de Produtos + System.out.println("=== Testando Repositório de Produtos ==="); + Repositorio repoProduto = new RepositorioProduto(); + + // Criando alguns produtos + Produto p1 = new Produto("Notebook", 3500.00); + Produto p2 = new Produto("Smartphone", 2500.00); + Produto p3 = new Produto("Tablet", 1200.00); + + // Salvando produtos + System.out.println("\nSalvando produtos..."); + repoProduto.salvar(p1); + repoProduto.salvar(p2); + repoProduto.salvar(p3); + + // Buscando por ID + System.out.println("\nBuscando produtos por ID:"); + System.out.println("Produto com ID 1: " + repoProduto.buscarPorId(1)); + System.out.println("Produto com ID 2: " + repoProduto.buscarPorId(2)); + + // Listando todos os produtos + System.out.println("\nListando todos os produtos:"); + List todosProdutos = repoProduto.listarTodos(); + todosProdutos.forEach(System.out::println); + + // Testando busca por nome (método específico de RepositorioProduto) + System.out.println("\nBuscando produtos com 'note' no nome:"); + ((RepositorioProduto) repoProduto).buscarPorNome("note").forEach(System.out::println); + + // Testando Repositório de Clientes + System.out.println("\n=== Testando Repositório de Clientes ==="); + Repositorio repoCliente = new RepositorioCliente(); + + // Criando alguns clientes + Cliente c1 = new Cliente("João Silva", "joao@email.com"); + Cliente c2 = new Cliente("Maria Santos", "maria@email.com"); + Cliente c3 = new Cliente("Carlos Oliveira", "carlos@email.com"); + + // Salvando clientes + System.out.println("\nSalvando clientes..."); + repoCliente.salvar(c1); + repoCliente.salvar(c2); + repoCliente.salvar(c3); + + // Buscando por ID + System.out.println("\nBuscando clientes por ID:"); + System.out.println("Cliente com ID 1: " + repoCliente.buscarPorId(1)); + System.out.println("Cliente com ID 3: " + repoCliente.buscarPorId(3)); + + // Listando todos os clientes + System.out.println("\nListando todos os clientes:"); + List todosClientes = repoCliente.listarTodos(); + todosClientes.forEach(System.out::println); + + // Testando busca por nome (método específico de RepositorioCliente) + System.out.println("\nBuscando clientes com 'maria' no nome:"); + ((RepositorioCliente) repoCliente).buscarPorNome("maria").forEach(System.out::println); + } } +