os códigos completos, com os arquivos modificados, estão aqui
RecipenteDeNotas.java
CaixaDeRecipentes.java
CaixaEletronico.java
public class CaixaEletronico {
private static final CaixaDeRecipentes CAIXA_ELETRONICO = new CaixaDeRecipentes();
static {
CAIXA_ELETRONICO.depositarNotas(100,2); //2 notas de R$ 100,00
CAIXA_ELETRONICO.depositarNotas(50,10); //10 notas de R$ 50,00
CAIXA_ELETRONICO.depositarNotas(20,7); //7 notas de R$ 20,00
CAIXA_ELETRONICO.depositarNotas(10,6); //6 notas de R$ 10,00
CAIXA_ELETRONICO.depositarNotas(5,9); //9 notas de R$ 5,00
CAIXA_ELETRONICO.depositarNotas(2,14); //14 notas de R$ 2,00
CAIXA_ELETRONICO.depositarNotas(1,33); //33 notas de R$ 1,00
}
public static void main(String[] args) {
CaixaDeRecipentes saqueDoJoao = new CaixaDeRecipentes(); //recipiente para receber as cedulas
int valorDoSaque = 338; //R$ 338,00
int valorPendente = CAIXA_ELETRONICO.transfereCedulas(valorDoSaque, saqueDoJoao);
if (valorPendente != 0) { //se não houve cedulas suficientes para o saque
CAIXA_ELETRONICO.extornar(saqueDoJoao);
System.out.println("Não há notas suficientes para realizar a operação");
} else
System.out.println("Saque realizado com sucesso");
System.out.println("Notas entregues ao cliente");
System.out.println(saqueDoJoao);
System.out.println();
System.out.println("Notas restantes no caixa eletronico");
System.out.println(CAIXA_ELETRONICO);
}
}
a resposta do console ao executar o CaixaEletronico
Saque realizado com sucesso
Notas entregues ao cliente
Valor total de R$ 338
2 nota(s) de R$ 100,00
2 nota(s) de R$ 50,00
1 nota(s) de R$ 20,00
1 nota(s) de R$ 10,00
1 nota(s) de R$ 5,00
1 nota(s) de R$ 2,00
1 nota(s) de R$ 1,00
Notas restantes no caixa eletronico
Valor total de R$ 668
0 nota(s) de R$ 100,00
8 nota(s) de R$ 50,00
6 nota(s) de R$ 20,00
5 nota(s) de R$ 10,00
8 nota(s) de R$ 5,00
13 nota(s) de R$ 2,00
32 nota(s) de R$ 1,00
para não entregar mais de 30 cedulas é facil, basta incluir um
if (saqueDoCliente.getQuantidade() > 30)
extorno(saqueDoCliente);