Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 57 additions & 0 deletions Java_Generics/Cliente.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
public class Cliente {

private int id;
private String nome;
private String email;

public Cliente() {
}

public Cliente(int id, String nome, String email) {
this.id = id;
this.nome = nome;
this.email = email;
}

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 "Cliente{id=" + id + ", nome='" + nome + "', email='" + email + "'}";
}

@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Cliente cliente = (Cliente) obj;
return id == cliente.id;
}

@Override
public int hashCode() {
return Integer.hashCode(id);
}
}
57 changes: 57 additions & 0 deletions Java_Generics/Produto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
public class Produto {

private int id;
private String nome;
private double preco;

public Produto() {
}

public Produto(int id, String nome, double preco) {
this.id = id;
this.nome = nome;
this.preco = preco;
}

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 "Produto{id=" + id + ", nome='" + nome + "', preco=R$ " + String.format("%.2f", preco) + "}";
}

@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Produto produto = (Produto) obj;
return id == produto.id;
}

@Override
public int hashCode() {
return Integer.hashCode(id);
}
}
8 changes: 8 additions & 0 deletions Java_Generics/Repositorio.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import java.util.List;

public interface Repositorio<T> {

void salvar(T obj);
T buscarPorId(int id);
List<T> listarTodos();
}
7 changes: 7 additions & 0 deletions Java_Generics/RepositorioCliente.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
public class RepositorioCliente extends RepositorioMemoria<Cliente> {

@Override
protected int getId(Cliente cliente) {
return cliente.getId();
}
}
44 changes: 44 additions & 0 deletions Java_Generics/RepositorioMemoria.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import java.util.ArrayList;
import java.util.List;

public abstract class RepositorioMemoria<T> implements Repositorio<T> {

protected List<T> dados;

public RepositorioMemoria() {
this.dados = new ArrayList<>();
}

@Override
public void salvar(T obj) {
if (obj != null) {
// Verifica se já existe um objeto com o mesmo ID
int id = getId(obj);
T existente = buscarPorId(id);

if (existente != null) {
// Remove o objeto existente e adiciona o novo
dados.remove(existente);
}

dados.add(obj);
}
}

@Override
public T buscarPorId(int id) {
for (T item : dados) {
if (getId(item) == id) {
return item;
}
}
return null;
}

@Override
public List<T> listarTodos() {
return new ArrayList<>(dados);
}

protected abstract int getId(T obj);
}
7 changes: 7 additions & 0 deletions Java_Generics/RepositorioProduto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
public class RepositorioProduto extends RepositorioMemoria<Produto> {

@Override
protected int getId(Produto produto) {
return produto.getId();
}
}
104 changes: 104 additions & 0 deletions Java_Generics/TesteRepositorio.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
import java.util.List;

public class TesteRepositorio {

public static void main(String[] args) {
System.out.println("=== Teste do Sistema de Repositório Genérico ===\n");

testarRepositorioProdutos();

System.out.println("\n" + "=".repeat(50) + "\n");

testarRepositorioClientes();
}

private static void testarRepositorioProdutos() {
System.out.println("--- Teste do Repositório de Produtos ---");

Repositorio<Produto> repositorioProdutos = new RepositorioProduto();

Produto produto1 = new Produto(1, "Notebook", 7500.00);
Produto produto2 = new Produto(2, "Mouse", 150.00);
Produto produto3 = new Produto(3, "Teclado", 155.00);

System.out.println("Salvando produtos...");
repositorioProdutos.salvar(produto1);
repositorioProdutos.salvar(produto2);
repositorioProdutos.salvar(produto3);

System.out.println("\nListando todos os produtos:");
List<Produto> todosProdutos = repositorioProdutos.listarTodos();
for (Produto produto : todosProdutos) {
System.out.println(" " + produto);
}

System.out.println("\nBuscando produto com ID 2:");
Produto produtoEncontrado = repositorioProdutos.buscarPorId(2);
if (produtoEncontrado != null) {
System.out.println(" Produto encontrado: " + produtoEncontrado);
} else {
System.out.println(" Produto não encontrado");
}

System.out.println("\nBuscando produto com ID 999 (inexistente):");
Produto produtoInexistente = repositorioProdutos.buscarPorId(999);
if (produtoInexistente != null) {
System.out.println(" Produto encontrado: " + produtoInexistente);
} else {
System.out.println(" Produto não encontrado (comportamento esperado)");
}

// Teste de atualização
System.out.println("\nTestando atualização de produto existente:");
Produto produtoAtualizado = new Produto(2, "Mouse Gamer", 200.00);
repositorioProdutos.salvar(produtoAtualizado);
System.out.println(" Produto atualizado: " + repositorioProdutos.buscarPorId(2));
}

private static void testarRepositorioClientes() {
System.out.println("--- Teste do Repositório de Clientes ---");

Repositorio<Cliente> repositorioClientes = new RepositorioCliente();

Cliente cliente1 = new Cliente(1, "Elaine Soares", "elaine@email.com");
Cliente cliente2 = new Cliente(2, "Alex Araujo", "alex@email.com");
Cliente cliente3 = new Cliente(3, "Pedro Costa", "pedro@email.com");

System.out.println("Salvando clientes...");
repositorioClientes.salvar(cliente1);
repositorioClientes.salvar(cliente2);
repositorioClientes.salvar(cliente3);

System.out.println("\nListando todos os clientes:");
List<Cliente> todosClientes = repositorioClientes.listarTodos();
for (Cliente cliente : todosClientes) {
System.out.println(" " + cliente);
}

System.out.println("\nBuscando cliente com ID 1:");
Cliente clienteEncontrado = repositorioClientes.buscarPorId(1);
if (clienteEncontrado != null) {
System.out.println(" Cliente encontrado: " + clienteEncontrado);
} else {
System.out.println(" Cliente não encontrado");
}

System.out.println("\nBuscando cliente com ID 999 (inexistente):");
Cliente clienteInexistente = repositorioClientes.buscarPorId(999);
if (clienteInexistente != null) {
System.out.println(" Cliente encontrado: " + clienteInexistente);
} else {
System.out.println(" Cliente não encontrado (comportamento esperado)");
}

System.out.println("\nTestando atualização de cliente existente:");
Cliente clienteAtualizado = new Cliente(1, "Elaine Soares Silva", "elaine.silva@email.com");
repositorioClientes.salvar(clienteAtualizado);
System.out.println(" Cliente atualizado: " + repositorioClientes.buscarPorId(1));

System.out.println("\n=== Teste concluído com sucesso! ===");
}
}



27 changes: 27 additions & 0 deletions SOLID/desafio/Item.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package desafio;

public class Item {
private String nome;
private double preco;
private int quantidade;
private double peso;

public Item(String nome, double preco, int quantidade, double peso) {
this.nome = nome;
this.preco = preco;
this.quantidade = quantidade;
this.peso = peso;
}

public double getPreco() {
return preco;
}

public int getQuantidade() {
return quantidade;
}

public double getPeso() {
return peso;
}
}
Loading