Simulação de uma máquina de café escrita em Java.
Desenvolvido para aplicar os estudos na linguagem, esse projeto é um desafio do Movimento Codar, desenvolvido no Eclipse num período de dois dias e refatorado um tempo depois.
O objetivo desse código é simples: simular um sistema simples de uma máquina de café rodado pelo próprio terminal. Foi feito pensando em sua constante execução, como num sistema real, mas empilhando o mínimo de métodos possíveis sobre a stack.
Essa é a primeira interação do usuário com o sistema.
-
É possível escolher entre 5 bebidas, com três opções de preços. A água quente é gratuita e pula as etapas de verificação de pagamento.
-
Escolher um número não listado lança uma exception personalizada, que é imediatamente tratada interrompendo o método atual da pilha e abrindo um novo, pedindo novamente a entrada do usuário. Esse processo se repete até que o usuário enfim coloque um número válido.
-
Escolher 0 desliga o sistema, usando um
System.exit(0)
. -
A quantidade de água é exibida logo acima da escolha do usuário. Cada bebida gasta 50ml de água do repositório, que é constantemente atualizado na tela de escolha de bebidas. O repositório zerado impede o preparo de qualquer bebida, com uma exception que é imediatamente tratada, sem interromper a execução do programa.
-
Ao escolher uma bebida que não seja água quente, o sistema pergunta se o usuário deseja escolher o nível de açúcar. O nível padrão são 3 colheres, que o usuário pode alterar, escolhendo de 0 a 5.
-
O usuário pode escolher a forma de pagamento. Ao escolher dinheiro, deve inserir um valor que seja igual a qualquer cédula válida no Brasil em 2021. Ao escolher débito, há a liberdade para colocar como crédito o valor que preferir. Um valor menor que o preço da bebida escolhida resulta em outra exceção, indicando saldo induficiente, e o sistema volta à escolha de bebidas.
-
Essa máquina de café não devolve troco. A cada transação é guardado o valor de "troco" como crédito, que desconta das próximas compras do usuário. Num sistema real, deveria ocorrer alguma forma de reconhecer os usuários e armazenar seus respectivos créditos, esse código simula isso.
-
Para simular o processo de preparo da bebida, foi utilizado o
Thread.sleep(ms)
num método da classe abstrata Sistema Interno. Ele "pausa" o programa durante o tempo especificado (em milisegundos). -
É descrito o preparo de cada bebida com pausas entre cada etapa.
- No fim, é chamada novamente a tela de escolha de bebida. O processo se repete continuamente, encerrando os processos desnecessários para preservar a memória da stack.