Interface
Além dos mais diversos tipos de Livros, nossa livraria também trabalhará com Revistas e futuramente outros produtos. Podemos criar uma nova classe para representá-la, como a seguir:
public class Revista {
java
private String nome; private String descricao; private double valor; private Editora editora;
// getters e setters
java
public boolean aplicaDescontoDe(double porcentagem) { if (porcentagem > 0.1) {return false;
}
double desconto = getValor() * porcentagem; setValor(getValor() - desconto);
return true;
}
}
Repare que, além de um nome, descricao e valor, uma revista também possui uma regra de desconto e é composta pela classe Editora. Essa é uma outra classe bastante simples:
public class Editora {
java
private String nomeFantasia; private String razaoSocial; private String cnpj;
// getters e setters
}
Precisamos agora evoluir nosso CarrinhoDeCompras para que seja
possível, além de Livros, adicionar Revistas. Uma solução seria duplicar seu método adiciona:
public class CarrinhoDeCompras { private double total;
text
public void adiciona(Livro livro) { System.out.println("Adicionando: " + livro); livro.aplicaDescontoDe(0.05);total += livro.getValor();
}
public void adiciona(Revista revista) { System.out.println("Adicionando: " + revista); revista.aplicaDescontoDe(0.05);total += revista.getValor();
}
public double getTotal() { return total;