1
resposta

[Minha resolução] exercício 6

public class Produto implements Vendavel{
    private String nome;
    private double precoUnitario;

    public void setPrecoUnitario(double precoUnitario) {
        this.precoUnitario = precoUnitario;
    }

    @Override
    public double calcularPrecoTotal(int quantidade) {
        return precoUnitario = precoUnitario * quantidade;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    @Override
    public void aplicarDesconto(double percentualDesconto) {
    precoUnitario -= precoUnitario * (percentualDesconto / 100);
        System.out.println("O preco total do produto "+ nome +" com desconto é "+precoUnitario+".");
    }
}

public class Servico implements Vendavel {
    private String descricao;
    private double precoHora;

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public void setPrecoHora(double precoHora) {
        this.precoHora = precoHora;
    }

    @Override
    public double calcularPrecoTotal(int quantidade) {
        return precoHora = precoHora * quantidade;
    }
    @Override
    public void aplicarDesconto(double percentualDesconto) {
    precoHora -= precoHora * (percentualDesconto/100);
        System.out.println("O preço da hora do serviço de "+descricao+ " é "+precoHora+".");
    }
}

********************************
public class Principal {
    public static void main(String[] args) {
       Produto produto = new Produto();
        produto.setNome("veiculo");
        produto.setPrecoUnitario(60000);
        produto.aplicarDesconto(10);
        produto.calcularPrecoTotal(1);

        Servico servico = new Servico();
        servico.setDescricao("pintor");
        servico.setPrecoHora(80);
        servico.aplicarDesconto(5);
        servico.calcularPrecoTotal(10);
        
        O preço total do produto veiculo com desconto é 54000.0.
        O preço da hora do serviço de pintor é 76.0.
1 resposta

Oi, Guilherme! Tudo bem?

Ótimo código, parabéns! Deixo apenas uma sugestão em relação aos métodos calcularPrecoTotal tanto na classe Produto quanto na classe Servico, pois estamos usando o operador de atribuição = ao invés do operador de multiplicação *. Devemos retornar o resultado da multiplicação sem alterar o valor original do preço, como nos exemplos abaixo:

Para a classe Produto:

@Override
public double calcularPrecoTotal(int quantidade) {
    return precoUnitario * quantidade;
}

E para a classe Servico:

@Override
public double calcularPrecoTotal(int quantidade) {
    return precoHora * quantidade;
}

Com essas modificações, o método calcularPrecoTotal irá retornar o valor correto sem alterar o preço original armazenado no objeto.

Espero ter ajudado!

Um forte abraço e bons estudos!