1
resposta

[Projeto] Desafios resolvidos dos exercicios: 5 e 6

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));
    }
}
1 resposta

Olá, Aldeny! Como você está?

Meus parabéns pela excelente resolução de mais um conjunto de desafios! É muito bom ver como você está avançando no curso e aplicando conceitos fundamentais como herança e interfaces de forma tão assertiva.

Conte sempre com a Alura para evoluir seus estudos. Em caso de dúvidas, estou à disposição.

Bons estudos!

Sucesso

Imagem da comunidade