2
respostas

Desafio: Hora da Prática

Desafio 1:

package Desafio1;

public class ConversorMoeda implements ConversaoFinanceira {
private double real = 5.49;

public void setReal(double real) {
this.real = real;
}

public double getReal() {
return real;
}

@Override
public double converterDolarParaReal(double dolar) {
double valorConvertido = real * dolar;
return valorConvertido;
}

public static void main(String[] args) {
ConversorMoeda operacao = new ConversorMoeda();

System.out.println(operacao.converterDolarParaReal(1));
System.out.println(operacao.converterDolarParaReal(5));
System.out.println(operacao.converterDolarParaReal(10));
System.out.println(operacao.converterDolarParaReal(50));
}
}

package Desafio1;

public interface ConversaoFinanceira {
double converterDolarParaReal(double dolar);
}

5.49
27.450000000000003
54.900000000000006
274.5

Desafio 2:

package Desafio2;

public class CalculadoraSalaRetangular implements CalculoGeometrico {
@Override
public int calcularArea(int altura, int largura) {
int area = largura * altura;
return area;
}

@Override
public int calcularPerimetro(int altura, int largura) {
int perimetro = 2 * (largura + altura);
return perimetro;
}

public static void main(String[] args) {
CalculadoraSalaRetangular retangulo = new CalculadoraSalaRetangular();

System.out.println(retangulo.calcularArea(2,3));
System.out.println(retangulo.calcularPerimetro(7,10));
}
}

package Desafio02;

public interface CalculoGeometrico {
int calcularArea(int altura, int largura);
int calcularPerimetro(int altura, int largura);
}

6
34

Desafio 3:

package Desafio3;

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

public static void main(String[] args) {
TabuadaMultiplicacao operacao = new TabuadaMultiplicacao();

operacao.mostrarTabuada(7);
}
}

package Desafio3;

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

7
14
21
28
35
42
49
56
63
70

Desafio 4:

package Desafio4;

public class ConversorTemperaturaPadrao implements ConversorTemperatura {
@Override
public double celsiusParaFahrenheit(double celsius) {
double resultado = (celsius * 1.8) + 32;
return resultado;

}

@Override
public double fahrenheitParaCelsius(double fahrenheit) {
double resultado = (fahrenheit - 32) / 1.8;
return resultado;

}

public static void main(String[] args) {
ConversorTemperaturaPadrao celParaFah = new ConversorTemperaturaPadrao();
ConversorTemperaturaPadrao fahParaCel = new ConversorTemperaturaPadrao();

System.out.println(celParaFah.celsiusParaFahrenheit(15));
System.out.println(celParaFah.celsiusParaFahrenheit(30));

System.out.println(fahParaCel.fahrenheitParaCelsius(59));
System.out.println(fahParaCel.fahrenheitParaCelsius(86));
}
}

package Desafio4;

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

59.0
86.0
15.0
30.0

Desafio 5:

package Desafio5;

public class Livro implements Calculavel {
@Override
public double calcularPrecoFinal(double valor) {
double valorImposto = valor * taxaAdicional / 100;
double precoFinal = valor * (1 + taxaAdicional / 100);
return precoFinal;
}

public static void main(String[] args) {
Livro olhosPrateados = new Livro();
Livro intoThePit = new Livro();

System.out.println(olhosPrateados.calcularPrecoFinal(40.18));
System.out.println(intoThePit.calcularPrecoFinal(61.78));
}
}

package Desafio5;

public class ProdutoFisico implements Calculavel {
@Override
public double calcularPrecoFinal(double valor) {
double valorImposto = valor * taxaAdicional / 100;
double precoFinal = valor * (1 + taxaAdicional / 100);
return precoFinal;
}

public static void main(String[] args) {
ProdutoFisico mouse = new ProdutoFisico();
ProdutoFisico monitor = new ProdutoFisico();

System.out.println(mouse.calcularPrecoFinal(332.91));
System.out.println(monitor.calcularPrecoFinal(1059.99));
}
}

package Desafio5;

public interface Calculavel {
double taxaAdicional = 15;

double calcularPrecoFinal(double valor);

}

46.206999999999994
71.047

382.8465
1218.9885
2 respostas

Desafio 6:

package Desafio6;

public class Produto implements Vendavel {
@Override
public double desconto(double valor) {
double precoComDesconto = valor * (1 - desconto / 100);
return precoComDesconto;
}

@Override
public double precoTotalPorQuantidade(double valor, double quantidade) {
double precoTotal = valor * quantidade;
return precoTotal;
}

public static void main(String[] args) {
Produto headset = new Produto();
Produto pacoca = new Produto();

System.out.println(headset.desconto(100));
System.out.println(pacoca.desconto(2.50));

System.out.println(headset.precoTotalPorQuantidade(100, 3));
System.out.println(headset.precoTotalPorQuantidade(2.50, 2));
}
}

package Desafio6;

public class Servico implements Vendavel {
protected double horasTrabalhadas = 8;

@Override
public double desconto(double valor) {
double desconto = horasTrabalhadas * valor / 100;
return desconto;
}

@Override
public double precoTotalPorQuantidade(double valor, double quantidade) {
//Neste caso, a 'quantidade' será referente as horas trabalhadas
double precoHoras = valor * quantidade;
return precoHoras;
}

public static void main(String[] args) {
Servico exemplo1 = new Servico();

System.out.println(exemplo1.desconto(8.50));
System.out.println(exemplo1.precoTotalPorQuantidade(8.50, 8));
}
}

package Desafio6;

public interface Vendavel {
double desconto = 10;

double desconto(double valor);
double precoTotalPorQuantidade(double valor, double quantidade);
}

90.0
2.25
300.0
5.0

0.68
68.0

Oi, Henrique! Como vai?

Agradeço por compartilhar.

Curti bastante como você evoluiu para o uso de interfaces nos desafios, aplicando bem contratos como Calculavel, Vendavel e ConversorTemperatura. Isso mostra um bom entendimento de abstração e reaproveitamento de código, principalmente ao manter a lógica organizada em cada implementação.

Uma dica interessante para o futuro é usar DecimalFormat para evitar aqueles números com muitas casas decimais ao imprimir valores.


import java.text.DecimalFormat;

DecimalFormat df = new DecimalFormat("0.00");

double valor = 27.450000000000003;
System.out.println(df.format(valor));

Esse código formata o número para duas casas decimais, deixando a saida mais limpa e facil de ler.

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