├── .gitignore ├── .idea ├── .gitignore ├── misc.xml ├── modules.xml └── uiDesigner.xml ├── LabOOJava.iml ├── LabOOJava_Resposta.zip ├── README.md └── src └── one └── digitalinovation └── laboojava ├── basedados └── Banco.java ├── console └── Start.java ├── entidade ├── Cliente.java ├── Cupom.java ├── Livro.java ├── Pedido.java ├── Produto.java └── constantes │ └── Genero.java ├── negocio ├── ClienteNegocio.java ├── PedidoNegocio.java └── ProdutoNegocio.java └── utilidade └── LeitoraDados.java /.gitignore: -------------------------------------------------------------------------------- 1 | # Project exclude paths 2 | /out/ -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/uiDesigner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | -------------------------------------------------------------------------------- /LabOOJava.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /LabOOJava_Resposta.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tlcdio/LabOOJava/512edc877d51d6aa3670fab7d87aba85d2d07da6/LabOOJava_Resposta.zip -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LabOO Java 2 | 3 | Olá! Este é o projeto de prática do LabOO Java da DIO. Algumas considerações deve ser informadas: 4 | 5 | * _Nenhum tratamento de erro foi feito_: forneça exatametne o que se pede. Não tente informar dados inexperados que a aplicação irá quebrar e encerrar. 6 | * _Desafios_: Existem alguns desafios quais você terá que responder. Para estes não existe código de resposta. 7 | * _Complementos_: Existem alguns postas no projeto que você poderá responder baseados nos videos e na resposta(arquivo LabOOJava_Resposta.zip) 8 | 9 | Espero que este Lab(projeto e videos) te ajude a aprender mais sobre OO. Grande abraço.Dúvidas e questionamentos favor mandar mensagem via LinkedIn. 10 | 11 | Grande abraço e bons estudos. 12 | 13 | -------------------------------------------------------------------------------- /src/one/digitalinovation/laboojava/basedados/Banco.java: -------------------------------------------------------------------------------- 1 | package one.digitalinovation.laboojava.basedados; 2 | 3 | import one.digitalinovation.laboojava.entidade.Cliente; 4 | import one.digitalinovation.laboojava.entidade.Cupom; 5 | import one.digitalinovation.laboojava.entidade.Pedido; 6 | import one.digitalinovation.laboojava.entidade.Produto; 7 | 8 | import java.util.ArrayList; 9 | import java.util.List; 10 | 11 | /** 12 | * Classe responsável por simular um banco de dados. Esta faz as inserções e exclusões da 13 | * aplicação. Atualizações não são permitidas para facilitar o funcionamento da aplicação. 14 | * @author thiago leite 15 | */ 16 | public class Banco { 17 | 18 | /** 19 | * Lista que armazena os produtos(livros e cadernos) cadastrados. 20 | */ 21 | private List produtos; 22 | 23 | /** 24 | * Lista que armazena os pedidos cadastrados. 25 | */ 26 | private List pedidos; 27 | 28 | /** 29 | * Lista que armazena os cupons disponíveis. 30 | */ 31 | private List cupons; 32 | 33 | /** 34 | * Cliente cadastrado. 35 | */ 36 | private Cliente cliente; 37 | 38 | public Banco() { 39 | 40 | this.produtos = new ArrayList<>(); 41 | this.pedidos = new ArrayList<>(); 42 | this.cliente = new Cliente(); 43 | 44 | this.cupons = new ArrayList<>(); 45 | cupons.add(new Cupom("CUPOM2", 2)); 46 | cupons.add(new Cupom("CUPOM5", 5)); 47 | cupons.add(new Cupom("CUPOM7", 7)); 48 | } 49 | 50 | public Cliente getCliente() { 51 | return cliente; 52 | } 53 | 54 | public Cupom[] getCupons() { 55 | return cupons.toArray(new Cupom[cupons.size()]); 56 | } 57 | 58 | public Pedido[] getPedidos() { 59 | return pedidos.toArray(new Pedido[pedidos.size()]); 60 | } 61 | 62 | public Produto[] getProdutos() { 63 | return produtos.toArray(new Produto[produtos.size()]); 64 | } 65 | 66 | public void adicionarProduto(Produto produto) { 67 | produtos.add(produto); 68 | } 69 | 70 | public void removerProduto(int posicao) { 71 | produtos.remove(posicao); 72 | } 73 | 74 | public void adicionarPedido(Pedido pedido) { 75 | pedidos.add(pedido); 76 | } 77 | 78 | public void removerPedido(int posicao) { 79 | pedidos.remove(posicao); 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /src/one/digitalinovation/laboojava/console/Start.java: -------------------------------------------------------------------------------- 1 | package one.digitalinovation.laboojava.console; 2 | 3 | import one.digitalinovation.laboojava.basedados.Banco; 4 | import one.digitalinovation.laboojava.entidade.*; 5 | import one.digitalinovation.laboojava.negocio.ClienteNegocio; 6 | import one.digitalinovation.laboojava.negocio.PedidoNegocio; 7 | import one.digitalinovation.laboojava.negocio.ProdutoNegocio; 8 | import one.digitalinovation.laboojava.utilidade.LeitoraDados; 9 | 10 | import java.util.Optional; 11 | 12 | /** 13 | * Classe responsável por controlar a execução da aplicação. 14 | * @author thiago leite 15 | */ 16 | public class Start { 17 | 18 | private static Cliente clienteLogado = null; 19 | 20 | private static Banco banco = new Banco(); 21 | 22 | private static ClienteNegocio clienteNegocio = new ClienteNegocio(banco); 23 | private static PedidoNegocio pedidoNegocio = new PedidoNegocio(banco); 24 | private static ProdutoNegocio produtoNegocio = new ProdutoNegocio(banco); 25 | 26 | /** 27 | * Método utilitário para inicializar a aplicação. 28 | * @param args Parâmetros que podem ser passados para auxiliar na execução. 29 | */ 30 | public static void main(String[] args) { 31 | 32 | System.out.println("Bem vindo ao e-Compras"); 33 | 34 | String opcao = ""; 35 | 36 | while(true) { 37 | 38 | if (clienteLogado == null) { 39 | 40 | System.out.println("Digite o cpf:"); 41 | 42 | String cpf = ""; 43 | cpf = LeitoraDados.lerDado(); 44 | 45 | identificarUsuario(cpf); 46 | } 47 | 48 | System.out.println("Selecione uma opção:"); 49 | System.out.println("1 - Cadastrar Livro"); 50 | System.out.println("2 - Excluir Livro"); 51 | //TODO Desafio: Consultar Livro(nome) 52 | System.out.println("3 - Cadastrar Caderno"); 53 | System.out.println("4 - Excluir Caderno"); 54 | //TODO Desafio: Consultar Caderno(matéria) 55 | System.out.println("5 - Fazer pedido"); 56 | System.out.println("6 - Excluir pedido"); 57 | //TODO Desafio: Consultar Pedido(código) 58 | System.out.println("7 - Listar produtos"); 59 | System.out.println("8 - Listar pedidos"); 60 | System.out.println("9 - Deslogar"); 61 | System.out.println("10 - Sair"); 62 | 63 | opcao = LeitoraDados.lerDado(); 64 | 65 | switch (opcao) { 66 | case "1": 67 | Livro livro = LeitoraDados.lerLivro(); 68 | produtoNegocio.salvar(livro); 69 | break; 70 | case "2": 71 | System.out.println("Digite o código do livro"); 72 | String codigoLivro = LeitoraDados.lerDado(); 73 | produtoNegocio.excluir(codigoLivro); 74 | break; 75 | case "3": 76 | //TODO Cadastrar Caderno 77 | break; 78 | case "4": 79 | //TODO Excluir Caderno 80 | break; 81 | case "5": 82 | Pedido pedido = LeitoraDados.lerPedido(banco); 83 | Optional cupom = LeitoraDados.lerCupom(banco); 84 | 85 | if (cupom.isPresent()) { 86 | pedidoNegocio.salvar(pedido, cupom.get()); 87 | } else { 88 | pedidoNegocio.salvar(pedido); 89 | } 90 | break; 91 | case "6": 92 | System.out.println("Digite o código do pedido"); 93 | String codigoPedido = LeitoraDados.lerDado(); 94 | pedidoNegocio.excluir(codigoPedido); 95 | break; 96 | case "7": 97 | produtoNegocio.listarTodos(); 98 | break; 99 | case "8": 100 | //TODO Listar todos os Pedidos 101 | break; 102 | case "9": 103 | System.out.println(String.format("Volte sempre %s!", clienteLogado.getNome())); 104 | clienteLogado = null; 105 | break; 106 | case "10": 107 | System.out.println("Aplicação encerrada."); 108 | System.exit(0); 109 | break; 110 | default: 111 | System.out.println("Opção inválida."); 112 | break; 113 | } 114 | } 115 | } 116 | 117 | /** 118 | * Procura o usuário na base de dados. 119 | * @param cpf CPF do usuário que deseja logar na aplicação 120 | */ 121 | private static void identificarUsuario(String cpf) { 122 | 123 | Optional resultado = clienteNegocio.consultar(cpf); 124 | 125 | if (resultado.isPresent()) { 126 | 127 | Cliente cliente = resultado.get(); 128 | System.out.println(String.format("Olá %s! Você está logado.", cliente.getNome())); 129 | clienteLogado = cliente; 130 | } else { 131 | System.out.println("Usuário não cadastrado."); 132 | System.exit(0); 133 | } 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /src/one/digitalinovation/laboojava/entidade/Cliente.java: -------------------------------------------------------------------------------- 1 | package one.digitalinovation.laboojava.entidade; 2 | 3 | /** 4 | * Classe que representa a entidade cliente. Este pode fazer um pedido. 5 | * @author thiago leite 6 | */ 7 | public class Cliente { 8 | 9 | /** 10 | * Nome completo do cliente. 11 | */ 12 | private String nome; 13 | 14 | /** 15 | * Número de CPF(Cadastro de Pessoa Física) do cliente. 16 | */ 17 | private String cpf; 18 | 19 | public Cliente() { 20 | this.nome = "Fulano"; 21 | this.cpf = "123456789011"; 22 | } 23 | 24 | public String getNome() { 25 | return nome; 26 | } 27 | 28 | public void setNome(String nome) { 29 | this.nome = nome; 30 | } 31 | 32 | public String getCpf() { 33 | return cpf; 34 | } 35 | 36 | public void setCpf(String cpf) { 37 | this.cpf = cpf; 38 | } 39 | 40 | @Override 41 | public String toString() { 42 | return "Cliente{ nome='" + nome + "'}"; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/one/digitalinovation/laboojava/entidade/Cupom.java: -------------------------------------------------------------------------------- 1 | package one.digitalinovation.laboojava.entidade; 2 | 3 | /** 4 | * Classe que representa a entidade cupom. Este pode ser utilizado no ato do fechamento do pedido 5 | * para obter um desconto, caso desejado. 6 | * @author thiago leite 7 | */ 8 | public class Cupom { 9 | 10 | /** 11 | * Código descritivo do cupom. 12 | */ 13 | private String codigo; 14 | 15 | /** 16 | * Valor em porcentagem do desconto. 17 | */ 18 | private int desconto; 19 | 20 | /** 21 | * Construtor do cupom 22 | * @param codigo Código do cupom 23 | * @param desconto Porcentagem de desconto 24 | */ 25 | public Cupom(String codigo, int desconto) { 26 | this.codigo = codigo; 27 | this.desconto = desconto; 28 | } 29 | 30 | public String getCodigo() { 31 | return codigo; 32 | } 33 | 34 | public void setCodigo(String codigo) { 35 | this.codigo = codigo; 36 | } 37 | 38 | public double getDesconto() { 39 | return desconto; 40 | } 41 | 42 | public void setDesconto(int desconto) { 43 | this.desconto = desconto; 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/one/digitalinovation/laboojava/entidade/Livro.java: -------------------------------------------------------------------------------- 1 | package one.digitalinovation.laboojava.entidade; 2 | 3 | import one.digitalinovation.laboojava.entidade.constantes.Genero; 4 | 5 | /** 6 | * Classe que representa um livro, qual é uma especialização de um produto da loja. 7 | * @author thiago leite 8 | */ 9 | public class Livro extends Produto { 10 | 11 | /** 12 | * Nome do livro. 13 | */ 14 | private String nome; 15 | 16 | /** 17 | * Gênero do livro. 18 | */ 19 | private Genero genero; 20 | 21 | public String getNome() { 22 | return nome; 23 | } 24 | 25 | public void setNome(String nome) { 26 | this.nome = nome; 27 | } 28 | 29 | public Genero getGenero() { 30 | return genero; 31 | } 32 | 33 | public void setGenero(Genero genero) { 34 | this.genero = genero; 35 | } 36 | 37 | /** 38 | * {@inheritDoc}. 39 | */ 40 | @Override 41 | public double calcularFrete() { 42 | return (getPreco() * getQuantidade()) * (1 + genero.getFator()); 43 | } 44 | 45 | @Override 46 | public String toString() { 47 | return "Livro{" + 48 | "nome='" + nome + '\'' + 49 | ", genero=" + genero + '\'' + 50 | ", codigo='" + getCodigo() + '\'' + 51 | ", preço='" + getPreco() + '\'' + 52 | '}'; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/one/digitalinovation/laboojava/entidade/Pedido.java: -------------------------------------------------------------------------------- 1 | package one.digitalinovation.laboojava.entidade; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | /** 7 | * Classe que representa a entidade pedido, qual é a compra dos produtos por um cliente. 8 | * @author thiago leite 9 | */ 10 | public class Pedido { 11 | 12 | //TODO Preencher esta classe 13 | 14 | //codigo 15 | //cliente 16 | //produtos 17 | //total 18 | } 19 | -------------------------------------------------------------------------------- /src/one/digitalinovation/laboojava/entidade/Produto.java: -------------------------------------------------------------------------------- 1 | package one.digitalinovation.laboojava.entidade; 2 | 3 | /** 4 | * Classe que representa a abstração dos produtos que podem ser vendidos pela loja. 5 | * @author thiago leite 6 | */ 7 | public abstract class Produto { 8 | 9 | /** 10 | * Código de identiticação do produto. 11 | */ 12 | private String codigo; 13 | 14 | /** 15 | * Valor unitário do produto. 16 | */ 17 | private double preco; 18 | 19 | /** 20 | * Quantidade comprada do produto. 21 | */ 22 | private int quantidade; 23 | 24 | public Produto() {} 25 | 26 | public String getCodigo() { 27 | return codigo; 28 | } 29 | 30 | public void setCodigo(String codigo) { 31 | this.codigo = codigo; 32 | } 33 | 34 | public double getPreco() { 35 | return preco; 36 | } 37 | 38 | public int getQuantidade() { 39 | return quantidade; 40 | } 41 | 42 | public void setPreco(double preco) { 43 | this.preco = preco; 44 | } 45 | 46 | public void setQuantidade(int quantidade) { 47 | this.quantidade = quantidade; 48 | } 49 | 50 | /** 51 | * Calcula o preço do frete para os produtos comprados. Este cálculo pode 52 | * variar de acordo com o produto 53 | * @return valor do frete para o determinado produto 54 | */ 55 | //TODO Método de cálculo de frete 56 | } 57 | -------------------------------------------------------------------------------- /src/one/digitalinovation/laboojava/entidade/constantes/Genero.java: -------------------------------------------------------------------------------- 1 | package one.digitalinovation.laboojava.entidade.constantes; 2 | 3 | /** 4 | * Gêneros dos livros vendidos. 5 | * @author thiago leite 6 | */ 7 | public enum Genero { 8 | 9 | DRAMA(15), 10 | 11 | SUSPENSE(10), 12 | 13 | ROMANCE(5); 14 | 15 | private double fator; 16 | 17 | /** 18 | * Construtor. 19 | * @param fator Valor por tipo que influencia no cálculo do frete. 20 | */ 21 | Genero(double fator) { 22 | this.fator = fator / 100; 23 | } 24 | 25 | public double getFator() { 26 | return fator; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/one/digitalinovation/laboojava/negocio/ClienteNegocio.java: -------------------------------------------------------------------------------- 1 | package one.digitalinovation.laboojava.negocio; 2 | 3 | import one.digitalinovation.laboojava.basedados.Banco; 4 | import one.digitalinovation.laboojava.entidade.Cliente; 5 | 6 | import java.util.Optional; 7 | 8 | /** 9 | * Classe para manipular a entidade {@link Cliente}. 10 | * @author thiago leite 11 | */ 12 | public class ClienteNegocio { 13 | 14 | /** 15 | * {@inheritDoc}. 16 | */ 17 | private Banco bancoDados; 18 | 19 | /** 20 | * Construtor. 21 | * @param banco Banco de dados para ter acesso aos clientes cadastrados 22 | */ 23 | public ClienteNegocio(Banco banco) { 24 | this.bancoDados = banco; 25 | } 26 | 27 | /** 28 | * Consulta o cliente pelo seu CPF. 29 | * @param cpf CPF de um cliente 30 | * @return O cliente que possuir o CPF passado. 31 | */ 32 | public Optional consultar(String cpf) { 33 | 34 | if (bancoDados.getCliente().getCpf().equals(cpf)) { 35 | return Optional.of(bancoDados.getCliente()); 36 | } else { 37 | return Optional.empty(); 38 | } 39 | } 40 | 41 | /** 42 | * Cadastra um novo cliente. 43 | * @param cliente Novo cliente que terá acesso a aplicação 44 | */ 45 | //TODO Fazer a inclusão de cliente 46 | 47 | /** 48 | * Exclui um cliente específico. 49 | * @param cpf CPF do cliente 50 | */ 51 | //TODO Fazer a exclusão de cliente 52 | 53 | } 54 | -------------------------------------------------------------------------------- /src/one/digitalinovation/laboojava/negocio/PedidoNegocio.java: -------------------------------------------------------------------------------- 1 | package one.digitalinovation.laboojava.negocio; 2 | 3 | import one.digitalinovation.laboojava.basedados.Banco; 4 | import one.digitalinovation.laboojava.entidade.Cupom; 5 | import one.digitalinovation.laboojava.entidade.Pedido; 6 | import one.digitalinovation.laboojava.entidade.Produto; 7 | 8 | import java.time.LocalDate; 9 | import java.util.List; 10 | 11 | /** 12 | * Classe para manipular a entidade {@link Pedido}. 13 | * @author thiago leite 14 | */ 15 | public class PedidoNegocio { 16 | 17 | /** 18 | * {@inheritDoc}. 19 | */ 20 | private Banco bancoDados; 21 | 22 | /** 23 | * Construtor. 24 | * @param banco Banco de dados para ter armazenar e ter acesso os pedidos 25 | */ 26 | public PedidoNegocio(Banco banco) { 27 | this.bancoDados = banco; 28 | } 29 | 30 | private double calcularTotal(List produtos, Cupom cupom) { 31 | 32 | double total = 0.0; 33 | for (Produto produto: produtos) { 34 | total += produto.calcularFrete(); 35 | } 36 | 37 | if (cupom != null) { 38 | return total * (1 - cupom.getDesconto()); 39 | } else { 40 | return total; 41 | } 42 | 43 | } 44 | 45 | /** 46 | * Salva um novo pedido sem cupom de desconto. 47 | * @param novoPedido Pedido a ser armazenado 48 | */ 49 | public void salvar(Pedido novoPedido) { 50 | salvar(novoPedido, null); 51 | } 52 | 53 | /** 54 | * Salva um novo pedido com cupom de desconto. 55 | * @param novoPedido Pedido a ser armazenado 56 | * @param cupom Cupom de desconto a ser utilizado 57 | */ 58 | public void salvar(Pedido novoPedido, Cupom cupom) { 59 | 60 | //Definir padrão código 61 | //Pegar data do dia corrente 62 | //Formatar código 63 | 64 | //Setar código no pedido 65 | //Setar cliente no pedido 66 | //Calcular e set total 67 | //Adicionar no banco 68 | //Mensagem 69 | } 70 | 71 | /** 72 | * Exclui um pedido a partir de seu código de rastreio. 73 | * @param codigo Código do pedido 74 | */ 75 | public void excluir(String codigo) { 76 | 77 | int pedidoExclusao = -1; 78 | for (int i = 0; i < bancoDados.getPedidos().length; i++) { 79 | 80 | Pedido pedido = bancoDados.getPedidos()[i]; 81 | if (pedido.getCodigo().equals(codigo)) { 82 | pedidoExclusao = i; 83 | break; 84 | } 85 | } 86 | 87 | if (pedidoExclusao != -1) { 88 | bancoDados.removerPedido(pedidoExclusao); 89 | System.out.println("Pedido excluído com sucesso."); 90 | } else { 91 | System.out.println("Pedido inexistente."); 92 | } 93 | } 94 | 95 | /** 96 | * Lista todos os pedidos realizados. 97 | */ 98 | //TODO Método de listar todos os pedidos 99 | 100 | } 101 | -------------------------------------------------------------------------------- /src/one/digitalinovation/laboojava/negocio/ProdutoNegocio.java: -------------------------------------------------------------------------------- 1 | package one.digitalinovation.laboojava.negocio; 2 | 3 | import one.digitalinovation.laboojava.basedados.Banco; 4 | import one.digitalinovation.laboojava.entidade.Produto; 5 | 6 | import java.util.Optional; 7 | 8 | /** 9 | * Classe para manipular a entidade {@link Produto}. 10 | * @author thiago leite 11 | */ 12 | public class ProdutoNegocio { 13 | 14 | /** 15 | * {@inheritDoc}. 16 | */ 17 | private Banco bancoDados; 18 | 19 | /** 20 | * Construtor. 21 | * @param banco Banco de dados para ter armazenar e ter acesso os produtos 22 | */ 23 | public ProdutoNegocio(Banco banco) { 24 | this.bancoDados = banco; 25 | } 26 | 27 | /** 28 | * Salva um novo produto(livro ou caderno) na loja. 29 | * @param novoProduto Livro ou caderno que pode ser vendido 30 | */ 31 | public void salvar(Produto novoProduto) { 32 | 33 | String codigo = "PR%04d"; 34 | codigo = String.format(codigo, bancoDados.getProdutos().length); 35 | novoProduto.setCodigo(codigo); 36 | 37 | boolean produtoRepetido = false; 38 | for (Produto produto: bancoDados.getProdutos()) { 39 | if (produto.getCodigo() == novoProduto.getCodigo()) { 40 | produtoRepetido = true; 41 | System.out.println("Produto já cadastrado."); 42 | break; 43 | } 44 | } 45 | 46 | if (!produtoRepetido) { 47 | this.bancoDados.adicionarProduto(novoProduto); 48 | System.out.println("Produto cadastrado com sucesso."); 49 | } 50 | } 51 | 52 | /** 53 | * Exclui um produto pelo código de cadastro. 54 | * @param codigo Código de cadastro do produto 55 | */ 56 | public void excluir(String codigo) { 57 | //TODO Implementar a exclusão 58 | } 59 | 60 | /** 61 | * Obtem um produto a partir de seu código de cadastro. 62 | * @param codigo Código de cadastro do produto 63 | * @return Optional indicando a existência ou não do Produto 64 | */ 65 | public Optional consultar(String codigo) { 66 | 67 | for (Produto produto: bancoDados.getProdutos()) { 68 | 69 | if (produto.getCodigo().equalsIgnoreCase(codigo)) { 70 | return Optional.of(produto); 71 | } 72 | } 73 | 74 | return Optional.empty(); 75 | } 76 | 77 | /** 78 | * Lista todos os produtos cadastrados. 79 | */ 80 | public void listarTodos() { 81 | 82 | if (bancoDados.getProdutos().length == 0) { 83 | System.out.println("Não existem produtos cadastrados"); 84 | } else { 85 | 86 | for (Produto produto: bancoDados.getProdutos()) { 87 | System.out.println(produto.toString()); 88 | } 89 | } 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /src/one/digitalinovation/laboojava/utilidade/LeitoraDados.java: -------------------------------------------------------------------------------- 1 | package one.digitalinovation.laboojava.utilidade; 2 | 3 | import one.digitalinovation.laboojava.basedados.Banco; 4 | import one.digitalinovation.laboojava.entidade.Pedido; 5 | import one.digitalinovation.laboojava.entidade.Livro; 6 | import one.digitalinovation.laboojava.entidade.Produto; 7 | import one.digitalinovation.laboojava.entidade.Cupom; 8 | import one.digitalinovation.laboojava.entidade.constantes.Genero; 9 | import one.digitalinovation.laboojava.negocio.ProdutoNegocio; 10 | 11 | import java.util.Optional; 12 | import java.util.Scanner; 13 | 14 | /** 15 | * Classe utilitária para auxiliar na leitura de entradas de dados via teclado. 16 | * @author thiago leite 17 | */ 18 | public final class LeitoraDados { 19 | 20 | /** 21 | * Classe do Java para manipular entradas via teclado. 22 | */ 23 | private static Scanner scanner; 24 | 25 | static { 26 | scanner = new Scanner(System.in); 27 | } 28 | 29 | /** 30 | * Ler um dado específico 31 | * @return Dado lido 32 | */ 33 | public static String lerDado() { 34 | 35 | String texto = scanner.nextLine(); 36 | 37 | return texto; 38 | } 39 | 40 | /** 41 | * Ler os dados do livro a ser cadastrado. 42 | * @return Um livro a partir dos dados de entrada 43 | */ 44 | public static Livro lerLivro() { 45 | 46 | System.out.println("Cadastrando livro..."); 47 | Livro livro = new Livro(); 48 | 49 | System.out.println("Digite o nome"); 50 | String nome = lerDado(); 51 | livro.setNome(nome); 52 | 53 | System.out.println("Digite o gênero: DRAMA, SUSPENSE, ROMANCE"); 54 | String genero = lerDado(); 55 | livro.setGenero(Genero.valueOf(genero.toUpperCase())); 56 | 57 | System.out.println("Digite o preço(padrão 0.0)"); 58 | String preco = lerDado(); 59 | livro.setPreco(Double.parseDouble(preco)); 60 | 61 | return livro; 62 | } 63 | 64 | /** 65 | * Ler os dados do caderno a ser cadastrado. 66 | * @return Um caderno a partir dos dados de entrada 67 | */ 68 | //TODO Método para ler o caderno 69 | 70 | /** 71 | * Ler os dados do pedido e retorna um objeto a partir destes. 72 | * @return Um pedido a partir dos dados de entrada 73 | */ 74 | public static Pedido lerPedido(Banco banco) { 75 | 76 | ProdutoNegocio produtoNegocio = new ProdutoNegocio(banco); 77 | 78 | System.out.println("Cadastrando pedido..."); 79 | Pedido pedido = new Pedido(); 80 | 81 | String opcao = "s"; 82 | do { 83 | 84 | System.out.println("Digite o código do produto(livro/Caderno)"); 85 | String codigo = lerDado(); 86 | 87 | Optional resultado = produtoNegocio.consultar(codigo); 88 | if (resultado.isPresent()) { 89 | 90 | Produto produto = resultado.get(); 91 | 92 | System.out.println("Digite a quantidade"); 93 | String quantidade = lerDado(); 94 | produto.setQuantidade(Integer.parseInt(quantidade)); 95 | 96 | pedido.getProdutos().add(produto); 97 | } else { 98 | System.out.println("Produto inexistente. Escolha um produto válido"); 99 | } 100 | 101 | System.out.println("Deseja selecionar mais um produto? s/n"); 102 | opcao = lerDado(); 103 | } while("s".equals(opcao)); 104 | 105 | return pedido; 106 | } 107 | 108 | /** 109 | * Ler os dados do cupom e retorna um objeto a partir destes. 110 | * @return O cupom a partir dos dados de entrada 111 | */ 112 | public static Optional lerCupom(Banco banco) { 113 | 114 | System.out.println("Caso queira utilizar algum cupom escolha entre: CUPOM2, CUPOM5, CUPOM7. Se não desejar, deixe em branco."); 115 | 116 | String desconto = lerDado(); 117 | 118 | for (Cupom cupom: banco.getCupons()) { 119 | if (cupom.getCodigo().equalsIgnoreCase(desconto)) { 120 | return Optional.of(cupom); 121 | } 122 | } 123 | 124 | return Optional.empty(); 125 | } 126 | 127 | } 128 | --------------------------------------------------------------------------------