-
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?
Changes from 3 commits
2c42dfc
c159a70
5c5915b
9e3e75a
3de67d8
64b1369
5f7aad2
5b99054
766bb1a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<module type="JAVA_MODULE" version="4"> | ||
<component name="NewModuleRootManager" inherit-compiler-output="true"> | ||
<exclude-output /> | ||
<content url="file://$MODULE_DIR$"> | ||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" /> | ||
</content> | ||
<orderEntry type="inheritedJdk" /> | ||
<orderEntry type="sourceFolder" forTests="false" /> | ||
</component> | ||
</module> |
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package cafes; | ||
|
||
public enum Acucar { | ||
Nivel0("nenhuma"),Nivel1("pouquíssima"),Nivel2("pouca"),Nivel3("normal"),Nivel4("muito"),Nivel5("bastante"); | ||
|
||
private String quantidadeDeAcucar; | ||
|
||
private Acucar(String quantidade){ | ||
this.quantidadeDeAcucar = quantidade; | ||
} | ||
|
||
public String getQuantidadeDeAcucar() { | ||
return this.quantidadeDeAcucar; | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
package cafes; | ||
import java.util.ArrayList; | ||
|
||
public class Bebida { | ||
private int id; | ||
private String nome; | ||
Receitas receita; | ||
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.
|
||
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. legal usar a classe BigDecimal do Java para valores que precisam de precisão decimal, como monetários |
||
private static ArrayList<Bebida> menu = new ArrayList<Bebida>(); | ||
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. Pq a bebida tem um Menu? Consegue pensar em outra classe que representaria melhor essa relação tem um menu? |
||
|
||
public Bebida(){ | ||
|
||
} | ||
|
||
public Bebida(int id, String nome, Receitas receita, double preco) { | ||
this.id = id; | ||
this.nome = nome; | ||
this.receita = receita; | ||
this.preco = preco; | ||
Bebida.menu.add(this); | ||
} | ||
|
||
public static ArrayList<Bebida> getMenu() { | ||
return menu; | ||
} | ||
|
||
public String getNome() { | ||
return nome; | ||
} | ||
|
||
public int getId() { | ||
return id; | ||
} | ||
|
||
public double getPreco() { | ||
return preco; | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
package cafes; | ||
|
||
import java.util.Scanner; | ||
import java.math.*; | ||
|
||
public class MaquinaDeCafe { | ||
|
||
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 commentThe reason will be displayed to describe this comment to others. Learn more. O reservatório de água não é uma propriedade (atributo) da MaquinaDeCafe? |
||
|
||
Receitas ReceitaDeCafe = new Receitas (true, true); | ||
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. Ao invés de ter uma classe Receitas com todas as receitas, poderia ter especializado cada classe com as suas propriedades, as receitas de cada bebida tem características diferentes e similares |
||
ReceitaDeCafe.setQuantidadeDePoCafe(10); | ||
|
||
Receitas ReceitaDeCafeComLeite = new Receitas (true, true); | ||
ReceitaDeCafeComLeite.setQuantidadeDePoCafe(5); | ||
ReceitaDeCafeComLeite.setQuantidadeDeLeite(10); | ||
|
||
Receitas ReceitaDeCappuccino = new Receitas (true, true); | ||
ReceitaDeCappuccino.setQuantidadeDePoCafe(5); | ||
ReceitaDeCappuccino.setQuantidadeDeLeite(5); | ||
ReceitaDeCappuccino.setQuantidadeDeChocolate(5); | ||
|
||
Receitas ReceitaDeChaDeLimao = new Receitas (true, true); | ||
ReceitaDeChaDeLimao.setQuantidadeDeLimao(10); | ||
|
||
Receitas ReceitaDeAguaQuente = new Receitas(true, false); | ||
|
||
Bebida Cafe = new Bebida(0,"Café",ReceitaDeCafe, 0.50); | ||
Bebida CafeComLeite = new Bebida(1,"Café com leite", ReceitaDeCafeComLeite, 1.00); | ||
Bebida Capuccino = new Bebida(2,"Capuccino",ReceitaDeCappuccino,1.50); | ||
Bebida ChaDeLimao = new Bebida(3,"Chá de limão", ReceitaDeChaDeLimao, 1.00); | ||
Bebida AguaQuente = new Bebida(4, "Água Quente", ReceitaDeAguaQuente, 0.00); | ||
|
||
if(reservaDeAguaAtual.getQuantidadeDeAguaNoReservatorio() > 50){ | ||
Inicializacao(cafeScanner, reservaDeAguaAtual.getQuantidadeDeAguaNoReservatorio(), BebidasMenu); | ||
} else { | ||
String keyRepor = "repor"; | ||
String repor = ""; | ||
do | ||
{ | ||
repor = getScanner(cafeScanner, "Por favor, digite 'repor' para repor quantidade de água"); | ||
} while(!keyRepor.equals(repor.toLowerCase())); | ||
|
||
reservaDeAguaAtual.reporQuantidadeDeAguaNoReservatorio(); | ||
System.out.println("Reservatório de água completo!"); | ||
Inicializacao(cafeScanner, reservaDeAguaAtual.getQuantidadeDeAguaNoReservatorio(), BebidasMenu); | ||
} | ||
|
||
|
||
} | ||
|
||
private static void Inicializacao(Scanner cafeScanner, int AtualQuantidadeDeAgua, Bebida BebidasMenu) { | ||
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. Uma convenção de nomenclatura para métodos, sempre em camelCase começando pela primeira letra minúscula e a primeira maiúscula para a(s) palavra(s) consecutiva(s) 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. Mesmo caso para os parâmetros |
||
|
||
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 commentThe 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 |
||
|
||
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("Reservatórios de água " + msgReservatorioDeAgua); | ||
|
||
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 commentThe 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 |
||
} | ||
|
||
String bebidaEscolhida = ""; | ||
do { | ||
bebidaEscolhida = getScanner(cafeScanner, "Digite o número da bebida escolhida"); | ||
} while(bebidaEncontrada(bebidaEscolhida, BebidasMenu) == -1); | ||
|
||
System.out.println("A bebida escolhida foi " + BebidasMenu.getMenu().get(Integer.parseInt(bebidaEscolhida)).getNome()); | ||
|
||
} | ||
} | ||
|
||
private static int bebidaEncontrada(String bebidaEscolhida, Bebida BebidasMenu){ | ||
for(int i = 0; i < BebidasMenu.getMenu().size(); i++){ | ||
int IDdasBebidasDoMenu = BebidasMenu.getMenu().get(i).getId(); | ||
if(String.valueOf(IDdasBebidasDoMenu).equals(bebidaEscolhida)){ | ||
return IDdasBebidasDoMenu; | ||
} | ||
} | ||
|
||
return -1; | ||
} | ||
|
||
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 commentThe reason will be displayed to describe this comment to others. Learn more. 👍 |
||
} | ||
|
||
private static String getScanner(Scanner cafeScanner, String mensagem) { | ||
System.out.println(mensagem); | ||
String entry = cafeScanner.nextLine(); | ||
return entry; | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
package cafes; | ||
|
||
public class Pagamento { | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
package cafes; | ||
|
||
public class Receitas { | ||
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 classe deve representar uma unidade de negócio |
||
private int quantidadeDeAgua; | ||
private int quantidadeDePoCafe; | ||
private int quantidadeDeLeite; | ||
private int quantidadeDeChocolate; | ||
private int quantidadeDeLimao; | ||
private boolean ferverAgua; | ||
private boolean filtro; | ||
|
||
public Receitas(boolean ferverAgua, boolean filtro) { | ||
this.quantidadeDeAgua = 50; | ||
this.ferverAgua = ferverAgua; | ||
this.filtro = filtro; | ||
} | ||
|
||
public int getQuantidadeDePoCafe() { | ||
return quantidadeDePoCafe; | ||
} | ||
|
||
public void setQuantidadeDePoCafe(int quantidadeDePoCafe) { | ||
this.quantidadeDePoCafe = quantidadeDePoCafe; | ||
} | ||
|
||
public int getQuantidadeDeLeite() { | ||
return quantidadeDeLeite; | ||
} | ||
|
||
public void setQuantidadeDeLeite(int quantidadeDeLeite) { | ||
this.quantidadeDeLeite = quantidadeDeLeite; | ||
} | ||
|
||
public int getQuantidadeDeChocolate() { | ||
return quantidadeDeChocolate; | ||
} | ||
|
||
public void setQuantidadeDeChocolate(int quantidadeDeChocolate) { | ||
this.quantidadeDeChocolate = quantidadeDeChocolate; | ||
} | ||
|
||
public int getQuantidadeDeLimao() { | ||
return quantidadeDeLimao; | ||
} | ||
|
||
public void setQuantidadeDeLimao(int quantidadeDeLimao) { | ||
this.quantidadeDeLimao = quantidadeDeLimao; | ||
} | ||
|
||
//metodo de processo da receita | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
package cafes; | ||
|
||
public class ReservatorioDeAgua { | ||
private int QuantidadeDeAguaNoReservatorio = 1000; | ||
|
||
public int getQuantidadeDeAguaNoReservatorio() { | ||
return QuantidadeDeAguaNoReservatorio; | ||
} | ||
|
||
public void atualizarNiveisDeAgua(int quantidadeDeAguaUtilizada) { | ||
QuantidadeDeAguaNoReservatorio = QuantidadeDeAguaNoReservatorio - quantidadeDeAguaUtilizada; | ||
} | ||
|
||
public void reporQuantidadeDeAguaNoReservatorio() { | ||
QuantidadeDeAguaNoReservatorio = 1000; | ||
} | ||
} |
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