1
resposta

Desafio: hora da prática

1. ConversorMoeda e ConversaoFinanceira

// Interface
interface ConversaoFinanceira {
    double converterDolarParaReal(double valorDolar);
}

// Implementação
class ConversorMoeda implements ConversaoFinanceira {
    private static final double TAXA_CONVERSAO = 5.20; // Exemplo de taxa

    @Override
    public double converterDolarParaReal(double valorDolar) {
        return valorDolar * TAXA_CONVERSAO;
    }
}

2. CalculadoraSalaRetangular e CalculoGeometrico

// Interface
interface CalculoGeometrico {
    double calcularArea();
    double calcularPerimetro();
}

// Implementação
class CalculadoraSalaRetangular implements CalculoGeometrico {
    private double altura;
    private double largura;

    public CalculadoraSalaRetangular(double altura, double largura) {
        this.altura = altura;
        this.largura = largura;
    }

    @Override
    public double calcularArea() {
        return altura * largura;
    }

    @Override
    public double calcularPerimetro() {
        return 2 * (altura + largura);
    }
}

3. TabuadaMultiplicacao e Tabuada

// Interface
interface Tabuada {
    void mostrarTabuada();
}

// Implementação
class TabuadaMultiplicacao implements Tabuada {
    private int numero;

    public TabuadaMultiplicacao(int numero) {
        this.numero = numero;
    }

    @Override
    public void mostrarTabuada() {
        for (int i = 1; i <= 10; i++) {
            System.out.println(numero + " x " + i + " = " + (numero * i));
        }
    }
}

4. ConversorTemperatura e ConversorTemperaturaPadrao

// Interface
interface ConversorTemperatura {
    double celsiusParaFahrenheit(double celsius);
    double fahrenheitParaCelsius(double fahrenheit);
}

// Implementação
class ConversorTemperaturaPadrao implements ConversorTemperatura {
    @Override
    public double celsiusParaFahrenheit(double celsius) {
        return (celsius * 9/5) + 32;
    }

    @Override
    public double fahrenheitParaCelsius(double fahrenheit) {
        return (fahrenheit - 32) * 5/9;
    }
}

5. Livro, ProdutoFisico e Calculavel

// Interface
interface Calculavel {
    double calcularPrecoFinal();
}

// Livro
class Livro implements Calculavel {
    private double preco;
    private double desconto; // em porcentagem

    public Livro(double preco, double desconto) {
        this.preco = preco;
        this.desconto = desconto;
    }

    @Override
    public double calcularPrecoFinal() {
        return preco - (preco * desconto / 100);
    }
}

// Produto Físico
class ProdutoFisico implements Calculavel {
    private double preco;
    private double taxaFrete;

    public ProdutoFisico(double preco, double taxaFrete) {
        this.preco = preco;
        this.taxaFrete = taxaFrete;
    }

    @Override
    public double calcularPrecoFinal() {
        return preco + taxaFrete;
    }
}

6. Produto, Servico e Vendavel

// Interface
interface Vendavel {
    double calcularPrecoTotal(int quantidade);
    double aplicarDesconto(double percentual);
}

// Produto
class Produto implements Vendavel {
    private double precoUnitario;

    public Produto(double precoUnitario) {
        this.precoUnitario = precoUnitario;
    }

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

    @Override
    public double aplicarDesconto(double percentual) {
        return precoUnitario - (precoUnitario * percentual / 100);
    }
}

// Serviço
class Servico implements Vendavel {
    private double precoPorHora;
    private int horasTrabalhadas;

    public Servico(double precoPorHora, int horasTrabalhadas) {
        this.precoPorHora = precoPorHora;
        this.horasTrabalhadas = horasTrabalhadas;
    }

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

    @Override
    public double aplicarDesconto(double percentual) {
        double precoTotal = calcularPrecoTotal(horasTrabalhadas);
        return precoTotal - (precoTotal * percentual / 100);
    }
}
1 resposta

Oi, Kauã! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Seu trabalho está muito bem organizado e mostra domínio em aplicar interfaces com diferentes propósitos, como Calculavel, Vendavel e ConversorTemperatura. Cada implementação demonstra atenção aos conceitos de coerência, encapsulamento e reutilização de código, fundamentais na orientação a objetos.

Continue firme nos estudos.

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