Crie uma interface Calculavel com um método double calcularPrecoFinal(). Implemente essa interface nas classes Livro e ProdutoFisico, cada uma retornando o preço final considerando descontos ou taxas adicionais.
package desafio;
public interface Calculavel {
double calcularPrecoFinal();
}
package desafio;
public class Livro extends Produto implements Calculavel{
private String titulo;
private String autor;
private static final double DESCONTO_FIXO = 0.30;
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public String getAutor() {
return autor;
}
public void setAutor(String autor) {
this.autor = autor;
}
public void exibirDetalhes(){
System.out.println("Titulo: " + this.getTitulo());
System.out.println("Autor: " + this.getAutor());
}
@Override
public double calcularPrecoFinal() {
return getPreco() * DESCONTO_FIXO;
}
}
package desafio;
public class ProdutoFisico extends Produto implements Calculavel {
private static final double TAXA_FIXA = 1.15;
@Override
public double calcularPrecoFinal() {
return super.getPreco() * TAXA_FIXA;
}
@Override
public double calcularPrecoTotal(int quantidade) {
return super.getPreco() * TAXA_FIXA * quantidade;
}
}
Crie uma interface Vendavel com métodos para calcular o preço total de um produto com base na quantidade comprada e aplicar descontos. Implemente essa interface nas classes Produto e Servico, cada uma fornecendo a sua própria lógica de cálculo de preço.
package desafio;
public interface Vendavel {
double calcularPrecoTotal(int quantidade);
void aplicarDesconto(double percentualDesconto);
}
package desafio;
public class Produto implements Vendavel {
private String nome;
private double preco;
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 double calcularPrecoTotal(int quantidade) {
return preco * quantidade;
}
public void aplicarDesconto(double desconto) {
preco -= preco / 100 * desconto;
}
}
package desafio;
public class Servico implements Vendavel {
private String nome;
private String descricao;
private double precoHora;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public double getPrecoHora() {
return precoHora;
}
public void setPrecoHora(double precoHora) {
this.precoHora = precoHora;
}
@Override
public double calcularPrecoTotal(int quantidade) {
return precoHora * quantidade;
}
@Override
public void aplicarDesconto(double percentualDesconto) {
precoHora -= precoHora * (percentualDesconto /100);
}
}
package desafio;
public class Main {
public static void main(String[] args) {
Livro livro = new Livro();
livro.setTitulo("O Enigma do Horizonte");
livro.setAutor("Rafael Montenegro");
livro.setPreco(42.90);
System.out.println("Preço final do Livro: R$" + livro.calcularPrecoFinal());
ProdutoFisico produtoFisico = new ProdutoFisico();
produtoFisico.setNome("A Última Fronteira Digital");
produtoFisico.setPreco(58.95);
System.out.println("Preço final do Produto Fisico: R$" + produtoFisico.calcularPrecoFinal());
// Aplicando a Produto Fisico que pertence a Protudo.
System.out.println();
System.out.println("Calculando Preco total do ProdutoFisico: R$" + produtoFisico.calcularPrecoTotal(10));
Servico servico = new Servico();
servico.setNome("Manutenção");
servico.setDescricao("Manutenção de Computadores");
servico.setPrecoHora(56.90);
//Aplicando a Serviço, conforme descrito na sugestão do desafio
System.out.println();
System.out.println("Calculando Preço total do Serviço: R$" + servico.calcularPrecoTotal(3));
}
}