El objetivo es construir un cajero automático y nuestra primera tarea es crear el software que desglosará qué billetes y monedas debe recibir el cliente cuando intente hacer un retiro.
El contenido del cajero es:
| Valor | Tipo |
|-------|---------|
| 500 | billete |
| 200 | billete |
| 100 | billete |
| 50 | billete |
| 20 | billete |
| 10 | billete |
| 5 | billete |
| 2 | modena |
| 1 | moneda |
Entrada:
Como usuario
Quiero retirar 1725€
Salida:
2 billetes de 200
1 billete de 20
1 billete de 10
2 monedas de 2
Obsesión primitiva y pareja ajustada a la presentación
public interface ATM {
public String withdraw(int quantity);
}
Devuelve una lista de DTO u Objetos de Valor
public interface ATM {
public List<Money> withdraw(int quantity);
}
Outside-in
public interface ATM {
public void withdraw(int quantity);
}
El cajero automático tiene la siguiente distribución de dinero.
El estado inicial de cualquier cajero automático
| Valor | Tipo | Número de unidades|
|-------|---------|-------------------|
| 500 | billete | 2 |
| 200 | billete | 3 |
| 100 | billete | 5 |
| 50 | billete | 12 |
| 20 | billete | 20 |
| 10 | billete | 50 |
| 5 | billete | 100 |
| 2 | moneda | 250 |
| 1 | moneda | 500 |
Estado inicial del cajero automático:
| Valor | Tipo | Número de unidades|
|-------|---------|-------------------|
| 500 | billete | 2 |
| 200 | billete | 3 |
| 100 | billete | 5 |
| 50 | billete | 12 |
| 20 | billete | 20 |
| 10 | billete | 50 |
| 5 | billete | 100 |
| 2 | moneda | 250 |
| 1 | moneda | 500 |
Entrada
Como usuario
Quiero retirar 1725€
Salida
2 billetes de 500
3 billetes de 200
1 billetes de 100
1 billetes de 20
1 billete de 5
Estado del cajero automático después de la salida
| Valor | Tipo | Número de unidades |
|-------|---------|---------------------|
| 500 | billete | 0 |
| 200 | billete | 0 |
| 100 | billete | 4 |
| 50 | billete | 12 |
| 20 | billete | 19 |
| 10 | billete | 50 |
| 5 | billete | 99 |
| 2 | moneda | 250 |
| 1 | moneda | 500 |
Entrada
Como usuario
He retirado 1825€
Salida
4 billetes de 100
12 billetes de 50
19 billetes de 20
44 billetes de 10
1 billetes de 5
Estado del cajero automático después de la salida
| Valor | Tipo | Número de unidades|
|-------|---------|-------------------|
| 500 | billete | 0 |
| 200 | billete | 0 |
| 100 | billete | 0 |
| 50 | billete | 0 |
| 20 | billete | 0 |
| 10 | billete | 6 |
| 5 | billete | 98 |
| 2 | moneda | 250 |
| 1 | moneda | 500 |
Los ejemplos gráficos que ves son una referencia de cómo funciona la kata, no tienes que aplicarlos si no quieres.