-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Desafio boas praticas #19
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
/.metadata/ | ||
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
package br.com.codar.maquinacafe; | ||
|
||
import java.util.Scanner; | ||
|
||
public class AguaQuente implements Bebida { | ||
|
||
private double preco; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Você não precisa desses atributos aqui, já que não está utilizando eles e sim os getters definidos na interface. O mesmo vale para as classes que representam outras bebidas. |
||
private int aguaConsumida; | ||
|
||
public AguaQuente(int pedidoBebidaUsuario) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. O mesmo vale pra esse int no construtor (acredito ser o id da bebida selecionada), como você não está utilizando ele não precisa ter. |
||
} | ||
|
||
public void preparaBebida(Credito credito, ReservatorioAgua reservatorio) { | ||
System.out.println("�gua Quente � gratuito, obrigado pelo pedido."); | ||
} | ||
|
||
public int solicitaNivelAcucar() { | ||
return 0; | ||
} | ||
|
||
@Override | ||
public double getPreco() { | ||
return 0; | ||
} | ||
|
||
@Override | ||
public int getAguaConsumida() { | ||
return 50; | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
package br.com.codar.maquinacafe; | ||
|
||
import java.util.Scanner; | ||
|
||
public interface Bebida { | ||
|
||
public default void preparaBebida(Credito credito, ReservatorioAgua reservatorio) { | ||
if (credito.getValorCredito() < this.getPreco()) { | ||
System.out.println("Valor de cr�dito insuficiente. Voc� pode inserir mais cr�ditos agora"); | ||
credito.adicionaCredito(credito); | ||
} | ||
reservatorio.conferindoReservatorio(); | ||
reservatorio.utilizandoAgua(getAguaConsumida()); | ||
} | ||
|
||
public default int solicitaNivelAcucar() { | ||
Scanner nivelAcucar = new Scanner(System.in); | ||
System.out.println("Como padr�o, o n�vel de a��car ser� 3, qual n�vel gostaria?\n " + "0, 1, 2, 3, 4, 5"); | ||
|
||
int opcaoAcucar = nivelAcucar.nextInt(); | ||
|
||
return opcaoAcucar; | ||
} | ||
|
||
double getPreco(); | ||
|
||
int getAguaConsumida(); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
package br.com.codar.maquinacafe; | ||
|
||
import java.util.Scanner; | ||
|
||
public class Cafe implements Bebida { | ||
|
||
private double preco; | ||
private int aguaConsumida; | ||
|
||
public Cafe(int pedidoBebidaUsuario) { | ||
} | ||
|
||
public void preparaBebida(Credito credito, ReservatorioAgua reservatorio) { | ||
} | ||
|
||
public int solicitaNivelAcucar() { | ||
return solicitaNivelAcucar(); | ||
} | ||
|
||
@Override | ||
public double getPreco() { | ||
return 0.50; | ||
} | ||
|
||
@Override | ||
public int getAguaConsumida() { | ||
return 50; | ||
} | ||
|
||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
package br.com.codar.maquinacafe; | ||
|
||
import java.util.Scanner; | ||
|
||
public class CafeComLeite implements Bebida { | ||
|
||
private double preco; | ||
private int aguaConsumida; | ||
|
||
public CafeComLeite(int pedidoBebidaUsuario) { | ||
} | ||
|
||
public void preparaBebida(Credito credito, ReservatorioAgua reservatorio) { | ||
} | ||
|
||
public int solicitaNivelAcucar() { | ||
return solicitaNivelAcucar(); | ||
} | ||
|
||
@Override | ||
public double getPreco() { | ||
return 1.00; | ||
} | ||
|
||
@Override | ||
public int getAguaConsumida() { | ||
return 50; | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
package br.com.codar.maquinacafe; | ||
|
||
import java.util.Scanner; | ||
|
||
public class Cafeteira { | ||
|
||
public static void main(String[] args) { | ||
|
||
Pedido pedido = new Pedido(); | ||
Credito credito = new Credito(); | ||
int iniciarEscolha; | ||
|
||
Scanner pedidoInicial = new Scanner(System.in); | ||
System.out.println("Ol�, escolha uma das op��es abaixo\n" + "1 - Adicionar cr�ditos\n" + "2 - Realizar pedido"); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Encapsular essas chamadas de System.out pode ser uma boa ideia. Se em algum momento for necessário refatorar o sistema para alterar a forma como as mensagens são imprimidas, já estaria tudo centralizado em um lugar. |
||
|
||
iniciarEscolha = pedidoInicial.nextInt(); | ||
System.out.println("Voc� escolheu: " + iniciarEscolha); | ||
|
||
switch (iniciarEscolha) { | ||
case 1: | ||
credito.adicionaCredito(credito); | ||
case 2: | ||
pedido.realizarPedido(credito, null); | ||
break; | ||
} | ||
|
||
Scanner outroPedido = new Scanner(System.in); | ||
System.out.println("Gostaria de fazer mais um pedido?\n" + "1 - Sim\n" + "2 - N�o"); | ||
|
||
iniciarEscolha = outroPedido.nextInt(); | ||
System.out.println("Voc� escolheu: " + iniciarEscolha); | ||
|
||
switch (iniciarEscolha) { | ||
case 1: | ||
credito.adicionaCredito(credito); | ||
pedido.realizarPedido(credito, null); | ||
break; | ||
case 2: | ||
System.out.println("Obrigado e at� mais."); | ||
break; | ||
} | ||
} | ||
} | ||
|
||
//Desenvolvido por Gabriel Trudes Melo |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
package br.com.codar.maquinacafe; | ||
|
||
import java.util.Scanner; | ||
|
||
public class Capuccino implements Bebida { | ||
|
||
private double preco; | ||
private int aguaConsumida; | ||
|
||
public Capuccino(int pedidoBebidaUsuario) { | ||
} | ||
|
||
public void preparaBebida(Credito credito, ReservatorioAgua reservatorio) { | ||
} | ||
|
||
public int solicitaNivelAcucar() { | ||
return solicitaNivelAcucar(); | ||
} | ||
|
||
@Override | ||
public double getPreco() { | ||
return 1.50; | ||
} | ||
|
||
@Override | ||
public int getAguaConsumida() { | ||
return 50; | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
package br.com.codar.maquinacafe; | ||
|
||
import java.util.Scanner; | ||
|
||
public class ChaDeLimao implements Bebida { | ||
|
||
private double preco; | ||
private int aguaConsumida; | ||
|
||
public ChaDeLimao(int pedidoBebidaUsuario) { | ||
} | ||
|
||
public void preparaBebida(Credito credito, ReservatorioAgua reservatorio) { | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Os métodos de preparar bebida não deveriam imprimir as mensagens do preparo (os ingredientes sendo utilizados)? |
||
|
||
public int solicitaNivelAcucar() { | ||
return solicitaNivelAcucar(); | ||
} | ||
|
||
@Override | ||
public double getPreco() { | ||
return 1.00; | ||
} | ||
|
||
@Override | ||
public int getAguaConsumida() { | ||
return 50; | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
package br.com.codar.maquinacafe; | ||
|
||
import java.io.InputStream; | ||
import java.util.Scanner; | ||
|
||
public class Credito { | ||
|
||
private double valorCredito; | ||
|
||
|
||
double getValorCredito() { | ||
return valorCredito; | ||
} | ||
|
||
public void setValorCredito(double valorCredito) { | ||
this.valorCredito++; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Aqui você só está incrementando o valor em um. Acho que aqui você queria somar o valor de crédito atual com o valor recebido. |
||
} | ||
|
||
public InputStream adicionaCredito(Credito credito) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. O método está sempre retornando null, então não tem motivo para o retorno ser InputStream. Se ele não precisa retornar nada ele pode ser void. |
||
Scanner opcaoCredito = new Scanner(System.in); | ||
System.out.println("Entre com o valor do cr�dito dispon�vel:\n" | ||
+ "5 - 5 cr�ditos\n" | ||
+ "10 - 10 cr�ditos\n" | ||
+ "20 - 20 cr�ditos\n" | ||
+ "50 - 50 cr�ditos\n" | ||
+ "100 - 100 cr�ditos\n" | ||
+ "200 - 200 cr�ditos"); | ||
|
||
int creditoInserido = opcaoCredito.nextInt(); | ||
if (creditoInserido <= 0) { | ||
throw new IllegalArgumentException("Insira um valor valido"); | ||
} | ||
double valorCredito = credito.getValorCredito(); | ||
valorCredito += creditoInserido; | ||
credito.setValorCredito(valorCredito); | ||
return null; | ||
|
||
} | ||
|
||
public void calculaTroco(double valorBebida, Credito credito) { | ||
double valorCredito = credito.getValorCredito(); | ||
valorCredito -= valorBebida; | ||
credito.setValorCredito(valorCredito); | ||
|
||
Scanner troco = new Scanner(System.in); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. A ideia de centralizar a lógica de ler dados do usuário em uma outra classe também pode ser uma boa ideia, pelo mesmo motivo de isolar o System.out |
||
System.out.println("Troco em cr�ditos: " + valorCredito); | ||
|
||
valorCredito = 0; | ||
credito.setValorCredito(valorCredito); | ||
} | ||
|
||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
package br.com.codar.maquinacafe; | ||
|
||
import java.util.Scanner; | ||
|
||
public class Pedido { | ||
|
||
public void realizarPedido(Credito credito, ReservatorioAgua reservatorio) { | ||
Scanner opcaoBebida = new Scanner(System.in); | ||
System.out.println( | ||
"Fa�a seu pedido entre as op��es:\n" + "1 - Caf� por R$0.50\n" + "2 - Caf� Com Leite por R$1.00\n" | ||
+ "3 - Capuccino por R$1.50\n" + "4 - Ch� De Lim�o por R$1.00\n" + "5 - �gua quente GRATUITO"); | ||
|
||
int pedidoBebidaUsuario = opcaoBebida.nextInt(); | ||
System.out.println("Obrigado, seu pedido ser�: " + pedidoBebidaUsuario); | ||
|
||
switch (pedidoBebidaUsuario) { | ||
case 1: | ||
Cafe cafe = new Cafe(pedidoBebidaUsuario); | ||
cafe.preparaBebida(credito, reservatorio); | ||
credito.calculaTroco(cafe.getPreco(), credito); | ||
break; | ||
|
||
case 2: | ||
CafeComLeite cafeComLeite = new CafeComLeite(pedidoBebidaUsuario); | ||
cafeComLeite.preparaBebida(credito, reservatorio); | ||
credito.calculaTroco(cafeComLeite.getPreco(), credito); | ||
break; | ||
|
||
case 3: | ||
Capuccino capuccino = new Capuccino(pedidoBebidaUsuario); | ||
capuccino.preparaBebida(credito, reservatorio); | ||
credito.calculaTroco(capuccino.getPreco(), credito); | ||
break; | ||
|
||
case 4: | ||
ChaDeLimao chaDeLimao = new ChaDeLimao(pedidoBebidaUsuario); | ||
chaDeLimao.preparaBebida(credito, reservatorio); | ||
credito.calculaTroco(chaDeLimao.getPreco(), credito); | ||
break; | ||
|
||
case 5: | ||
AguaQuente aguaQuente = new AguaQuente(pedidoBebidaUsuario); | ||
aguaQuente.preparaBebida(credito, reservatorio); | ||
credito.calculaTroco(aguaQuente.getPreco(), credito); | ||
break; | ||
|
||
default: | ||
System.out.println("Entre com uma das op��es dispon�veis"); | ||
} | ||
} | ||
|
||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
package br.com.codar.maquinacafe; | ||
|
||
public class ReservatorioAgua { | ||
|
||
private int nivelAgua; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Pela forma como está sendo utilizado o nivelAgua e reservatorio parecem ser a mesma coisa. Acho que poderia ter só um dos dois. |
||
private int reservatorio; | ||
|
||
public int getNivelAgua() { | ||
return nivelAgua; | ||
} | ||
|
||
public void setNivelAgua(int nivelAgua) { | ||
this.nivelAgua = nivelAgua; | ||
} | ||
|
||
public int getReservatorio() { | ||
return reservatorio; | ||
} | ||
|
||
public void conferindoReservatorio() { | ||
int reservatorio = getNivelAgua(); | ||
|
||
if (reservatorio == 0) { | ||
abastecendoReservatorio(); | ||
} | ||
} | ||
|
||
public int utilizandoAgua(int aguaConsumida) { | ||
int nivelAgua = getNivelAgua(); | ||
nivelAgua -= aguaConsumida; | ||
setNivelAgua(nivelAgua); | ||
|
||
return nivelAgua; | ||
} | ||
|
||
public void abastecendoReservatorio() { | ||
setNivelAgua(1000); | ||
int reservatorio = getNivelAgua(); | ||
} | ||
|
||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pode adicionar os arquivos .class ao .gitignore também