Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Desafio] Minhas resoluções

Desafio 1:

package br.com.alura.screenmatch.atividades.capitulo4;

public interface ConversaoFinanceira {

    double conversaoDolarParaReal(double dolar);
}

public class ConversorMoeda implements ConversaoFinanceira{

    double cotacaoDolar = 6.20;

    @Override
    public double conversaoDolarParaReal(double dolar) {
        return dolar * cotacaoDolar;
    }
}

Desafio 2:

package br.com.alura.screenmatch.atividades.capitulo4;

public interface CalculoGeometrico {

    void calcularArea(double altura, double largura);
    void calcularPerimetro(double altura, double largura);
}

public class CalculadoraSalaRetangular implements CalculoGeometrico{

    @Override
    public void calcularArea(double altura, double largura) {
        System.out.println("O valor da área da sala é: " + altura * largura);
    }

    @Override
    public void calcularPerimetro(double altura, double largura) {
        System.out.println("O valor do perímetro da sala é: " + 2 * (altura + largura));
    }
}

Desafio 3:

package br.com.alura.screenmatch.atividades.capitulo4;

public interface Tabuada {
    void mostrarTabuada(int numero);
}

public class TabuadaMultiplicacao implements Tabuada{

    @Override
    public void mostrarTabuada(int numero) {
        System.out.println("Tabuada do número: " + numero);
        for (int i = 1; i <= 10; i++) {
            System.out.println(numero + " vezes " + i + " é igual a " + numero * i);
        }
    }
}

Desafio 4:

package br.com.alura.screenmatch.atividades.capitulo4;

public interface ConversorTemperatura {
    void celsiusParaFahrenheit(double celsius);
    void fahrenheitParaCelsius(double fahrenheit);
}

public class ConversorTemperaturaPadrao implements ConversorTemperatura{

    @Override
    public void celsiusParaFahrenheit(double celsius) {
        double valorFahrenheit = (celsius * 1.8) + 32;
        System.out.println("A temperatura em Fahrenheit é: " + valorFahrenheit + "º");
    }

    @Override
    public void fahrenheitParaCelsius(double fahrenheit) {
        double valorCelsius = (fahrenheit - 32) * 5 / 9;
        System.out.println("A temperatura em Celsius é: " + valorCelsius + "º");
    }
}

Desafio 5:

package br.com.alura.screenmatch.atividades.capitulo4;

public interface Calculavel {
    double calcularPrecoFinal();
}

public class Livro implements Calculavel{
    private String nome;
    private String autor;
    private int paginas;
    private double preco;
    private boolean pagamentoPix = false;

    public void setPagamentoPix(boolean pagamentoPix) {
        this.pagamentoPix = pagamentoPix;
    }

    public String getNome() {
        return nome;
    }

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

    public String getAutor() {
        return autor;
    }

    public void setAutor(String autor) {
        this.autor = autor;
    }

    public int getPaginas() {
        return paginas;
    }

    public void setPaginas(int paginas) {
        this.paginas = paginas;
    }

    public double getPreco() {
        return preco;
    }

    public void setPreco(double preco) {
        this.preco = preco;
    }

    @Override
    public double calcularPrecoFinal() {
        if (pagamentoPix){
            double descontoPix = 5.0 / 100 // 5%
            return preco -= preco * descontoPix;
        } else {
            return preco;
        }
    }
}

public class ProdutoFisico implements Calculavel{

    private String nome;
    private double peso;
    private double preco;
    private boolean envioComFrete = false;

    public String getNome() {
        return nome;
    }

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

    public double getPeso() {
        return peso;
    }

    public void setPeso(double peso) {
        this.peso = peso;
    }

    public double getPreco() {
        return preco;
    }

    public void setPreco(double preco) {
        this.preco = preco;
    }

    public boolean isEnvioComFrete() {
        return envioComFrete;
    }

    public void setEnvioComFrete(boolean envioComFrete) {
        this.envioComFrete = envioComFrete;
    }

    @Override
    public double calcularPrecoFinal() {
        if (envioComFrete){
            double valorFrete = 9.99;
            return preco += valorFrete;
        } else {
            return preco;
        }
    }
}

O último desafio não coube aqui.

Usarei o restante dos caracteres para um questionamento: A IDE indicou que a declaração double descontoPix = 5.0 / 100 fosse feita no escopo do if do método calcularPrecoFinal(), o motivo é economia de recursos/memória? Ou há alguma outra razão?

1 resposta
solução!

Oi André,

Parabéns pela dedicação em resolver os desafios! 👏

Sobre sua dúvida, a IDE sugere declarar double descontoPix = 5.0 / 100 dentro do escopo do if por uma questão de escopo e clareza, não necessariamente por economia de memória.

Para saber mais: Escopo de variáveis em Java.

Continue praticando e explorando os conceitos! 🤔