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;

⬅️ Capítulo Anterior | Próximo Capítulo ➡️