From 26a843a7d38de64c62b8f796ce7378a089e2c8e1 Mon Sep 17 00:00:00 2001 From: vinicius Date: Wed, 6 Jan 2021 10:02:05 -0300 Subject: [PATCH] interface --- .../src/{Produto.java => ArtigoCultural.java} | 8 ++- LojaVirtual/src/Bicicleta.java | 47 +++++++++++++++- LojaVirtual/src/CD.java | 2 +- LojaVirtual/src/Caminhao.java | 4 ++ LojaVirtual/src/Livro.java | 2 +- LojaVirtual/src/Loja.java | 54 +++++++++---------- LojaVirtual/src/LojaTest.java | 15 ++++-- LojaVirtual/src/Transportadora.java | 6 +-- LojaVirtual/src/Transportavel.java | 8 +++ LojaVirtual/src/Veiculo.java | 6 ++- LojaVirtual/src/Vendavel.java | 17 ++++++ 11 files changed, 130 insertions(+), 39 deletions(-) rename LojaVirtual/src/{Produto.java => ArtigoCultural.java} (84%) create mode 100644 LojaVirtual/src/Transportavel.java create mode 100644 LojaVirtual/src/Vendavel.java diff --git a/LojaVirtual/src/Produto.java b/LojaVirtual/src/ArtigoCultural.java similarity index 84% rename from LojaVirtual/src/Produto.java rename to LojaVirtual/src/ArtigoCultural.java index aa2eed8..9b71f8b 100644 --- a/LojaVirtual/src/Produto.java +++ b/LojaVirtual/src/ArtigoCultural.java @@ -1,4 +1,4 @@ -public class Produto { +public class ArtigoCultural implements Vendavel, Transportavel { private final long id; // código único de identificação do produto @@ -10,7 +10,7 @@ public class Produto { private int pesoEmGramas; - public Produto(long id, String descricao) { + public ArtigoCultural(long id, String descricao) { this.id = id; this.descricao = descricao; } @@ -51,6 +51,10 @@ public void setPesoEmGramas(int pesoEmGramas) { this.pesoEmGramas = pesoEmGramas; } + public int getVolumeEmCm3() { + return 0; // ToDo IMPLEMENT ME! + } + @Override public String toString() { return descricao; diff --git a/LojaVirtual/src/Bicicleta.java b/LojaVirtual/src/Bicicleta.java index b5c6bcc..7fbfc97 100644 --- a/LojaVirtual/src/Bicicleta.java +++ b/LojaVirtual/src/Bicicleta.java @@ -1,2 +1,47 @@ -public class Bicicleta extends Veiculo { +public class Bicicleta extends Veiculo implements Vendavel { + + private static float PRECO_DEFAULT = 500; + + private long codigoModelo; + + private int aro; + + private String marca; + + private float precoEmReais; + + public int getAro() { + return aro; + } + + public Bicicleta(long codigoModelo, int aro, String marca) { + this.codigoModelo = codigoModelo; + this.aro = aro; + this.marca = marca; + this.precoEmReais = PRECO_DEFAULT; + } + + @Override + public long getId() { + return codigoModelo; + } + + @Override + public String getDescricao() { + return String.format("Bicicleta %s aro %d", marca, aro); + } + + @Override + public float getPrecoEmReais() { + return precoEmReais; + } + + public void setPrecoEmReais(float precoEmReais) { + this.precoEmReais = precoEmReais; + } + + @Override + public String toString() { + return getDescricao(); + } } diff --git a/LojaVirtual/src/CD.java b/LojaVirtual/src/CD.java index 9e3c4d3..422d126 100644 --- a/LojaVirtual/src/CD.java +++ b/LojaVirtual/src/CD.java @@ -1,4 +1,4 @@ -public class CD extends Produto { +public class CD extends ArtigoCultural { private String nomeDoDisco; diff --git a/LojaVirtual/src/Caminhao.java b/LojaVirtual/src/Caminhao.java index 22774e2..3621aee 100644 --- a/LojaVirtual/src/Caminhao.java +++ b/LojaVirtual/src/Caminhao.java @@ -1,2 +1,6 @@ public class Caminhao extends Veiculo { + + private int numeroDeEixos; + + } diff --git a/LojaVirtual/src/Livro.java b/LojaVirtual/src/Livro.java index ed7df90..8fa31f5 100644 --- a/LojaVirtual/src/Livro.java +++ b/LojaVirtual/src/Livro.java @@ -1,4 +1,4 @@ -public class Livro extends Produto { +public class Livro extends ArtigoCultural { private final int codigoISBN; diff --git a/LojaVirtual/src/Loja.java b/LojaVirtual/src/Loja.java index be96e26..1606202 100644 --- a/LojaVirtual/src/Loja.java +++ b/LojaVirtual/src/Loja.java @@ -7,7 +7,7 @@ public class Loja { private String nomeDaLoja; - private ArrayList catalogo; + private ArrayList catalogo; private Transportadora frete; @@ -20,10 +20,10 @@ public void setFrete(Transportadora transportadora) { frete = transportadora; } - public String receberPedido(Produto produto, int quantidade, Usuario usuario) { + public String receberPedido(ArtigoCultural item, int quantidade, Usuario usuario) { // verifica se existe no catálogo da loja - if (buscarProduto(produto.getId()) == null) { + if (buscarItem(item.getId()) == null) { // ToDo lançar uma exceção específica return null; } @@ -34,64 +34,64 @@ public String receberPedido(Produto produto, int quantidade, Usuario usuario) { return null; } - float precoTotal = quantidade * produto.getPrecoEmReais(); + float precoTotal = quantidade * item.getPrecoEmReais(); if (!processarPagamento(precoTotal)) { // ToDo lançar uma exceção específica return null; } - // cria um array com todos os livros que precisarão ser entregues - // (possivelmente várias unidades do mesmo produto) - ArrayList pedido = new ArrayList<>(); + // cria um array com todos os itens que precisarão ser entregues + // (possivelmente várias unidades do mesmo item) + ArrayList pedido = new ArrayList<>(); for (int i = 0; i < quantidade; i++) { - pedido.add(produto); + pedido.add(item); } frete.transportar(pedido, usuario.getEndereco()); String recibo = String.format("Recibo no valor de R$%.2f referente à " + - "compra de %d unidades do produto: %s", - precoTotal, quantidade, produto); + "compra de %d unidades do item: %s", + precoTotal, quantidade, item); return recibo; } - public void incluirProduto(Produto produto) { - if (buscarProduto(produto.getId()) != null) { + public void incluirItem(Vendavel vendavel) { + if (buscarItem(vendavel.getId()) != null) { // produto já existe no catálogo -- nada a fazer return; } - catalogo.add(produto); + catalogo.add(vendavel); } /** - * Busca um produto no catálogo da loja a partir de sua descrição. + * Busca um ítem no catálogo da loja a partir de sua descrição. * - * @param descricao a descrição do produto desejado (ou parte dela) - * @return o primeiro Produto que case com a descrição fornecida, caso encontre; + * @param descricao a descrição do ítem desejado (ou parte dela) + * @return o primeiro Vendavel que case com a descrição fornecida, caso encontre; * ou null, caso contrário */ - public Produto buscarProduto(String descricao) { - for (Produto produto : catalogo) { - if (produto.getDescricao().contains(descricao)) { - return produto; + public Vendavel buscarItem(String descricao) { + for (Vendavel item : catalogo) { + if (item.getDescricao().contains(descricao)) { + return item; } } return null; } /** - * Busca um produto no catálogo da loja a partir de seu código. + * Busca um ítem no catálogo da loja a partir de seu código. * - * @param id o código de identificação do produto desejado - * @return o Produto cujo código seja igual ao código fornecido, caso encontre; + * @param id o código de identificação do ítem desejado + * @return o Vendavel cujo código seja igual ao código fornecido, caso encontre; * ou null, caso contrário */ - public Produto buscarProduto(long id) { - for (Produto produto : catalogo) { - if (produto.getId() == id) { - return produto; + public Vendavel buscarItem(long id) { + for (Vendavel item : catalogo) { + if (item.getId() == id) { + return item; } } return null; diff --git a/LojaVirtual/src/LojaTest.java b/LojaVirtual/src/LojaTest.java index 4052537..abab1d4 100644 --- a/LojaVirtual/src/LojaTest.java +++ b/LojaVirtual/src/LojaTest.java @@ -9,6 +9,7 @@ public class LojaTest { Livro livro1; Livro livro2; CD cd1; + Bicicleta bicicleta1; Usuario comprador; Transportadora gatoPreto; @@ -28,9 +29,13 @@ public void setUp() { cd1 = new CD(121223, "Ride The Lightning", "Metallica", 1985); cd1.setPrecoEmReais(18.50f); - loja.incluirProduto(livro1); - loja.incluirProduto(livro2); - loja.incluirProduto(cd1); + bicicleta1 = new Bicicleta(9999, 700, "Pinarello"); + bicicleta1.setPrecoEmReais(580); + + loja.incluirItem(livro1); + loja.incluirItem(livro2); + loja.incluirItem(cd1); + loja.incluirItem(bicicleta1); comprador = new Usuario(111111, "Maria"); comprador.setEndereco("Rua Tal, Numero Tal"); @@ -45,6 +50,10 @@ public void testarVendaParaProdutoExistente() { recibo = loja.receberPedido(cd1, 1, comprador); assertNotNull(recibo); System.out.println(recibo); + + recibo = loja.receberPedido(bicicleta1, 3, comprador); + assertNotNull(recibo); + System.out.println(recibo); } @Test diff --git a/LojaVirtual/src/Transportadora.java b/LojaVirtual/src/Transportadora.java index 8a18429..9d221f3 100644 --- a/LojaVirtual/src/Transportadora.java +++ b/LojaVirtual/src/Transportadora.java @@ -4,10 +4,10 @@ public class Transportadora { private String nome; - public void transportar(ArrayList produtos, String endereco) { + public void transportar(ArrayList itens, String endereco) { System.out.println( - String.format("Transportando %d produtos para o endereço: %s", - produtos.size(), endereco)); + String.format("Transportando %d itens para o endereço: %s", + itens.size(), endereco)); // ToDo chamar de fato o serviço da transportadora física, emitindo OS } } diff --git a/LojaVirtual/src/Transportavel.java b/LojaVirtual/src/Transportavel.java new file mode 100644 index 0000000..ebeaad5 --- /dev/null +++ b/LojaVirtual/src/Transportavel.java @@ -0,0 +1,8 @@ +public interface Transportavel { + + String getDescricao(); + + int getPesoEmGramas(); + + int getVolumeEmCm3(); +} diff --git a/LojaVirtual/src/Veiculo.java b/LojaVirtual/src/Veiculo.java index f91e8e9..fd95b8e 100644 --- a/LojaVirtual/src/Veiculo.java +++ b/LojaVirtual/src/Veiculo.java @@ -5,6 +5,10 @@ public class Veiculo { private int cargaMaximaEmKg; public void mover(float velocidadeEmKmh) { - // Too IMPLEMENT ME!... + // ToDo IMPLEMENT ME! + } + + public void parar() { + // ToDo IMPLEMENT ME! } } diff --git a/LojaVirtual/src/Vendavel.java b/LojaVirtual/src/Vendavel.java new file mode 100644 index 0000000..a3098b7 --- /dev/null +++ b/LojaVirtual/src/Vendavel.java @@ -0,0 +1,17 @@ +public interface Vendavel { + + /** + * @return um identificador único para este Vendável. + */ + long getId(); + + /** + * @return a descrição textual deste Vendável. + */ + String getDescricao(); + + /** + * @return o preço unitário, em reais, do Vendável. + */ + float getPrecoEmReais(); +}