Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Sugestão] Como eu fiz o "interface Calculavel"

Olá pessoal, uma sugestão de como eu pensei nessa questão: 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.

Considerando que um Livro é um tipo de produto fisico (não considerei aqui os PDFs kkkk, apenas para exercitar o conceito de herança + interface), coloquei Livro herdando um produto fisico, e o produto fisico com a interface calculavel. Como o livro é filho de ProdutoFisico, então herda inclusive os métodos da interface. Ficou dessa forma:

public interface Calculavel {
    double calcularPrecoFinal();
}
public class Livro extends ProdutoFisico {
    private String titulo;
    private String editora;
}
public class ProdutoFisico implements Calculavel {
    private double precoOriginal;
    private double desconto;
    private double taxasAdicionais;

// coloquei os getters e setters. Tirei para não ficar um texto muito grande o código

    @Override
    public double calcularPrecoFinal() {
        double valorComDesconto = this.precoOriginal * (1 - this.desconto);
        return valorComDesconto + this.taxasAdicionais;
    }
}

E na classe principal:

Livro livro = new Livro();
        livro.setPrecoOriginal(15);
        livro.setDesconto(0.2);
        livro.setTaxasAdicionais(2);
        double valorFinal = livro.calcularPrecoFinal();
        System.out.println(livro.getPrecoOriginal() + " com " + livro.getDesconto() * 100 + "% de desconto");
        System.out.println(livro.getTaxasAdicionais() + " de taxa");
        System.out.println("Valor total: " + valorFinal);
1 resposta

Fala, Roger! Tudo bom?

Agradeço por trazer sua solução para o fórum!

Curti demais como trabalhou a interface Calculavel para definir um contrato em Java, entendeu perfeitamente a importância da herança de ProdutoFisico em Livro para reaproveitar atributos e métodos e usou bem a sobrescrita de calcularPrecoFinal() para aplicar descontos e taxas adicionais.

E algumas boas práticas que você pode adotar são:

  • Legibilidade: usar nomes claros para variáveis e métodos, como precoFinalLivro.
  • Encapsulamento: sempre acessar atributos via getters e setters, mantendo consistência.
  • Generalização: criar uma lista de produtos que implementam Calculavel e iterar para calcular preços finais de forma polimórfica.

Continue postando as suas soluções! Além de ganhar pontos de XP na plataforma, você pode ajudar outros estudantes no fórum.

Ah, uma pergunta: você prefere evoluir esse projeto para incluir outros tipos de produtos com regras próprias ou manter apenas Livro e ProdutoFisico para focar no conceito de interface e herança?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!