1
resposta

[Projeto] Desafio: hora da prática - Parte 2

Crie uma interface ConversorTemperatura com os métodos celsiusParaFahrenheit() e fahrenheitParaCelsius(). Implemente uma classe ConversorTemperaturaPadrao que implementa essa interface com as fórmulas de conversão e exibe os resultados.

package br.com.exercicio.conversor;

public interface ConversorTemperatura {
    double celsiusParaFahrenheit(double celsius);
    double fahrenheitParaCelsius(double fahrenheit);
}
package br.com.exercicio.conversor;

public class ConversorTemperaturaPadrao implements ConversorTemperatura{

    @Override
    public double celsiusParaFahrenheit(double celsius) {
        return (celsius * 1.8) + 32;
    }

    @Override
    public double fahrenheitParaCelsius(double fahrenheit) {
        return (fahrenheit - 32) * ((double) 5 / 9);
    }
}
import br.com.exercicio.conversor.ConversorTemperaturaPadrao;

public class Principal {
    public static void main(String[] args) {

        ConversorTemperaturaPadrao conversor = new ConversorTemperaturaPadrao();

        double valorCelsius = conversor.fahrenheitParaCelsius(68);
        double valorFahrenheit = conversor.celsiusParaFahrenheit(20);

        System.out.println(String.format("Conversão: %.2fºC", valorCelsius));
        System.out.println(String.format("Conversão: %.2fºF", valorFahrenheit));

    }
}

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 br.com.exercicio.produto.model;

public interface Calculavel {
    double calcularPrecoFinal();
}
package br.com.exercicio.produto.model;

public class Livro implements Calculavel {
    private double valorProdutos;
    private double PorcentagemDesconto;
    private double valorDesconto;

    @Override
    public double calcularPrecoFinal() {
        valorDesconto = (valorProdutos * PorcentagemDesconto) / 100;
        return valorProdutos - valorDesconto;
    }


    public void setValorProdutos(double valorProdutos) {
        this.valorProdutos = valorProdutos;
    }

    public void setPorcentagemDesconto(double porcentagemDesconto) {
        this.PorcentagemDesconto = porcentagemDesconto;
    }

}
package br.com.exercicio.produto.model;

public class ProdutoFisico implements Calculavel {
    private double valorProdutos;
    private double frete;

    @Override
    public double calcularPrecoFinal() {
        return valorProdutos + frete;
    }

    public void setFrete(double frete) {
        this.frete = frete;
    }

    public void setValorProdutos(double valorProdutos) {
        this.valorProdutos = valorProdutos;
    }
}
import br.com.exercicio.produto.model.Livro;
import br.com.exercicio.produto.model.ProdutoFisico;

public class Principal {

    public static void main(String[] args) {

        Livro livro = new Livro();
        livro.setValorProdutos(1500.00);
        livro.setPorcentagemDesconto(20);
        System.out.println(String.format("Preço final: R$%.2f", livro.calcularPrecoFinal()));

        ProdutoFisico produtoFisico = new ProdutoFisico();
        produtoFisico.setValorProdutos(2000.00);
        produtoFisico.setFrete(15.00);
        System.out.println(String.format("Preço final: R$%.2f", produtoFisico.calcularPrecoFinal()));

    }
}

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta

Oi, Aline! Como vai?

Gostei de ver como você aplicou o conceito de interfaces para organizar melhor o comportamento das classes. A implementação dos métodos celsiusParaFahrenheit() e fahrenheitParaCelsius() está bem estruturada, e o uso do String.format() para exibir os resultados mostra atenção aos detalhes na saída.

Uma dica interessante para o futuro é explorar o uso de interfaces funcionais com expressões lambda, que podem deixar o código mais enxuto. Veja este exemplo:


interface Operacao {
    double executar(double a, double b);
}

public class Main {
    public static void main(String[] args) {
        Operacao soma = (a, b) -> a + b;
        System.out.println(soma.executar(5, 3));
    }
}

Esse código usa uma interface com um único método e uma lambda para somar dois valores de forma simples.

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