Boa tarde Harlen,
Conforme meu entendimento, respondi assim:
package br.meusite.Desafio.CalculaPrecoFinal;
public interface Calculavel {
double calcularPrecoFinal();
}
package br.meusite.Desafio.CalculaPrecoFinal;
public interface Vendavel {
double calcularPrecoTotal (int quantidade);
void aplicarDesconto(double percentualDesconto);
}
package br.meusite.Desafio.CalculaPrecoFinal;
public class Produto implements Vendavel {
private String nome;
private double precoUnitario;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public double getPrecoUnitario() {
return precoUnitario;
}
public void setPrecoUnitario(double precoUnitario) {
this.precoUnitario = precoUnitario;
}
@Override
public double calcularPrecoTotal(int quantidade) {
return precoUnitario * quantidade;
}
@Override
public void aplicarDesconto(double percentualDesconto) {
precoUnitario -= precoUnitario * (percentualDesconto);
}
public void exibirInfoProduto() {
System.out.println("Nome do produto: " + nome);
System.out.println("Preço unitário: " + precoUnitario);
}
}
package br.meusite.Desafio.CalculaPrecoFinal;
public class Livro extends Produto implements Calculavel {
private String autor;
public String getAutor() {
return autor;
}
public void setAutor(String autor) {
this.autor = autor;
}
@Override
public double calcularPrecoFinal() {
return getPrecoUnitario() * 0.9;
}
public void exibirDadosLivro(){
System.out.println("Autor(es): " + autor);
System.out.println("Preço final: " + calcularPrecoFinal());
}
}
package br.meusite.Desafio.CalculaPrecoFinal;
public class ProdutoFisico extends Produto implements Calculavel {
@Override
public double calcularPrecoFinal() {
return getPrecoUnitario() * 1.05;
}
public void exibirPrecoFinal() {
System.out.println("Preço final: " + calcularPrecoFinal());
}
}
package br.meusite.Desafio.CalculaPrecoFinal;
public class Servico implements Vendavel {
private String descricao;
private double precoHora;
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.0);
}
public void exibirInfoServico() {
System.out.println("Descrição do serviço: " + descricao);
System.out.println("Valor hora/serviço: " + precoHora);
}
}
public class Main {
public static void main(String[] args) {
System.out.println("********* Exibe venda de produtos *********");
System.out.println("<-------- Venda produto físico --------> ");
ProdutoFisico produto = new ProdutoFisico();
produto.setNome("Leite");
produto.setPrecoUnitario(4.19);
produto.exibirInfoProduto();
produto.exibirPrecoFinal();
System.out.println();
System.out.println("<-------- Venda de livro --------> ");
Livro livro = new Livro();
livro.setNome("Padrões de Projeto");
livro.setPrecoUnitario(80);
livro.setAutor("Eric Freeman / Elisabeth Freeman");
livro.exibirInfoProduto();
livro.exibirDadosLivro();
System.out.println();
System.out.println("********* Exibe serviços prestados *********");
Servico servico = new Servico();
servico.setDescricao("Formatação notebook");
servico.setPrecoHora(75.00);
servico.aplicarDesconto(10);
servico.exibirInfoServico();
System.out.println();
}
}
Espero ter ajudado você!