Write the code for a simple ATM that allows a user to insert their card, enter their PIN, request cash and eject card.
Use the following object model for the system that shows the use of the State Pattern. You will need to figure what state to change to for each action. see image.
Build a test class like the following:
public class TestATMMachine {
public static void main(String[] args){
ATMMachine atmMachine = new ATMMachine(2000);
atmMachine.insertCard(“1234 5678 0000 1111”);
atmMachine.ejectCard();
atmMachine.insertCard(“1234 5678 0000 2222”);
atmMachine.insertPin(“1234”);
atmMachine.requestCash(2000);
atmMachine.ejectCard();
atmMachine.insertCard(“1234 5678 0000 2222”);
}
The output (output a line to simulate ATM actions) should be:
ATM has $2000
Card Inserted: 1234 5678 0000 1111
Card Ejected
Card Inserted: 1234 5678 0000 2222
Pin Entered: 1234
Cash Requested: $2000
Card Ejected
Error: Card can’t be Ejected – No Card Inserted.
Card Inserted: 1234 5678 0000 2222
Error: Out of Cash
Card Ejected