-
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 atualizado #4
base: main
Are you sure you want to change the base?
Conversation
@@ -0,0 +1,3 @@ | |||
# Default ignored files | |||
/shelf/ |
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.
É uma boa prática ignorar os arquivos/pastas:
- .idea
- out/
src/cafes/Acucar.java
Outdated
package cafes; | ||
|
||
public enum Acucar { | ||
Nivel0("nenhuma"),Nivel1("pouquíssima"),Nivel2("pouca"),Nivel3("normal"),Nivel4("muito"),Nivel5("bastante"); |
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.
a descrição dos campos do enum poderia seguir o mesmo que vc fez com o campo quantidadeDeAcucar (que poderia chamar descrição ao invés de quantidade, quantidade me remete a um número, o que acha?)
Uma convenção de nomenclatura para campos de enum é seguir o padrão UPPER_CASE, então poderia ser, por exemplo, NIVEL_0 ou NENHUMA, e assim por diante
src/cafes/Bebida.java
Outdated
public class Bebida { | ||
private int id; | ||
private String nome; | ||
Receitas receita; |
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.
- Uma bebida tem várias Receitas? O nome da classe Receitas ficou no plural errado ou a ideia foi deixar uma classe com todas as Receitas mesmo?
- Pq a visibilidade é default e não private?
src/cafes/Bebida.java
Outdated
private int id; | ||
private String nome; | ||
Receitas receita; | ||
private double preco; |
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.
legal usar a classe BigDecimal do Java para valores que precisam de precisão decimal, como monetários
src/cafes/Bebida.java
Outdated
private String nome; | ||
Receitas receita; | ||
private double preco; | ||
private static ArrayList<Bebida> menu = new ArrayList<Bebida>(); |
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.
Pq a bebida tem um Menu? Consegue pensar em outra classe que representaria melhor essa relação tem um menu?
src/cafes/MaquinaDeCafe.java
Outdated
public static void main(String[] args) { | ||
Scanner cafeScanner = new Scanner(System.in); | ||
Bebida BebidasMenu = new Bebida(); | ||
ReservatorioDeAgua reservaDeAguaAtual = new ReservatorioDeAgua(); |
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.
O reservatório de água não é uma propriedade (atributo) da MaquinaDeCafe?
src/cafes/MaquinaDeCafe.java
Outdated
|
||
private static void Inicializacao(Scanner cafeScanner, int AtualQuantidadeDeAgua, Bebida BebidasMenu) { | ||
|
||
String msgReservatorioDeAgua = AtualQuantidadeDeAgua > 50? "suficiente para " + (AtualQuantidadeDeAgua /50) + " bebidas" : "vazios, favor repor"; |
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.
( AtualQuantidadeDeAgua > 50 ) essa condição se repete no código, poderia extrair para uma variável, assim se o reservatório de água mudar de tamanho, você só precisará alterar em um lugar
src/cafes/MaquinaDeCafe.java
Outdated
|
||
if(AtualQuantidadeDeAgua > 50){ | ||
for (int i = 0; i < BebidasMenu.getMenu().size(); i++) { | ||
System.out.println(BebidasMenu.getMenu().get(i).getId() + " " + BebidasMenu.getMenu().get(i).getNome() + ", preço: " + (BebidasMenu.getMenu().get(i).getPreco() == 0? "grátis" : moedaEmReais(BebidasMenu.getMenu().get(i).getPreco()))); |
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.
Como vc acessa BebidasMenu.getMenu().get(i) várias vezes, poderia extrair para uma variável
src/cafes/MaquinaDeCafe.java
Outdated
|
||
private static String moedaEmReais(double valor) { | ||
BigDecimal b = new BigDecimal(valor); | ||
return "R$ " + b.setScale(2, RoundingMode.HALF_EVEN); |
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.
👍
src/cafes/Receitas.java
Outdated
@@ -0,0 +1,51 @@ | |||
package cafes; | |||
|
|||
public class Receitas { |
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.
A classe deve representar uma unidade de negócio
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.
Boa! 👏
src/cafes/Acucar.java
Outdated
@@ -12,4 +13,17 @@ private Acucar(String quantidade){ | |||
public String getQuantidadeDeAcucar() { | |||
return this.quantidadeDeAcucar; | |||
} | |||
|
|||
public static ArrayList<Acucar> getNiveisDeAcucar(){ | |||
ArrayList<Acucar> Niveis = new ArrayList<Acucar>(); |
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.
Aqui vc tbm pode usar a interface List como retorno, assim se amanhã vc precisar mudar a implementação de ArrayList para outro tipo de List, só precisará mudar em um lugar
src/cafes/Bebida.java
Outdated
@@ -4,15 +4,15 @@ | |||
public class Bebida { | |||
private int id; | |||
private String nome; | |||
Receitas receita; | |||
Receita receita; |
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.
👍
src/cafes/MaquinaDeCafe.java
Outdated
|
||
} | ||
|
||
private static void Inicializacao(Scanner cafeScanner, ReservatorioDeAgua reservaDeAguaAtual, Bebida BebidasMenu){ |
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.
A convenção para nomear métodos e seus parâmetros é camelCase
src/cafes/MaquinaDeCafe.java
Outdated
} | ||
|
||
private static void Inicializacao(Scanner cafeScanner, ReservatorioDeAgua reservaDeAguaAtual, Bebida BebidasMenu){ | ||
String msgReservatorioDeAgua = reservaDeAguaAtual.getQuantidadeDeAguaNoReservatorio() >= 50? "suficiente para " + (reservaDeAguaAtual.getQuantidadeDeAguaNoReservatorio() /50) + " bebidas." : "vazios."; |
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.
Quando a linha fica muito grande é legal quebrar, nesse caso poderia quebrar antes do "?" e do ":", por exemplo
src/cafes/MaquinaDeCafe.java
Outdated
|
||
System.out.println("-----Seja bem-vindo a máquina de café 2021!-----"); | ||
System.out.println("Atenção: essa máquina não devolve troco."); | ||
System.out.println("Para sair, digite 'sair' a qualquer momento."); |
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.
a qualquer momento mesmo?
src/cafes/MaquinaDeCafe.java
Outdated
|
||
if(precoBebidaEscolhida == 0){ | ||
System.out.println("A bebida será de graça."); | ||
BebidasMenu.getMenu().get(Integer.parseInt(bebidaEscolhida)).receita.Processo(Acucar.Nivel0, reservaDeAguaAtual); |
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.
Essa sentença BebidasMenu.getMenu().get(Integer.parseInt(bebidaEscolhida))
se repete bastante, é legal extrair para uma variável/constante
src/cafes/MaquinaDeCafe.java
Outdated
metodoDePagamentoEscolhido = getScanner(cafeScanner, "Digite 1 para pagamento em dinheiro e 2 para pagamento em cartão de débito."); | ||
} while(metodoDePagamento(metodoDePagamentoEscolhido) == -1); | ||
|
||
if(String.valueOf(metodoDePagamentoEscolhido).equals("1")){ |
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.
- A variável
metodoDePagamentoEscolhido
já é uma String, pq precisou do String.valueOf? - Quando vc está comparando uma variável do código com uma constante, nesse caso "1", inverte a condição para "1".equals(metodoDePagamentoEscolhido), dessa forma nunca acontecerá um NullPointerException.
- "1" representa o que? Isso é conhecido como número mágico, pois não dá pra saber o que é só de olhar aqui. Uma ideia é extrair para uma constante, outra é ter um Enum de métodos de pagamento e usá-lo aqui
src/cafes/MaquinaDeCafe.java
Outdated
String sugestaoMoeda = ""; | ||
do { | ||
sugestaoMoeda = getScanner(cafeScanner, "Digite 1 ou 2 para aceitar a sugestão ou 3 para adicionar qualquer nota ou moeda. Atenção: essa máquina não devolve troco."); | ||
} while(aceitarSugestaoMoeda(sugestaoMoeda) == -1); |
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.
O nome do método aceitarSugestaoMoeda
sugere que ele retorna um boolean, aceita ou não aceita (true/false)
src/cafes/MaquinaDeCafe.java
Outdated
|
||
System.out.println("--Favor escolher um nível de açúcar para sua bebida--"); | ||
|
||
for (int i = 0; i < Acucar.getNiveisDeAcucar().size() ; i++) { |
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.
👍
src/cafes/MaquinaDeCafe.java
Outdated
return SugestaoDeNotasEMoedas; | ||
} | ||
|
||
private static NotasEMoedas CalcularSugestoes(double Preco, NotasEMoedas NotasEMoedasReais, boolean SegundaSugestao){ |
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.
camelCase
No description provided.