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
Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.