// ATM Simulation - main program

ATM Simulation - main program


/*
 * Example ATM simulation - file ATMMain.java
 *
 * This file contains the main program for the ATM simulation - stand-alone version
 *
 * Copyright (c) 1997 - Russell C. Bjork
 *
 */

import java.awt.*;
import atm.ATM;
import atm.Bank;
import atm.util.Money;

public class ATMMain implements Runnable
  {
    // This method is invoked when ATMMain.class is run as an application.  It
    // creates a new object of this class.  Versions with and without arguments are
    // provided; Macs pop up a dialog box if main() needs arguments, and Linux 
    // systems require main() to take arguments.  Either way, the newly created
    // object does the work
    
    public static void main()
      { new ATMMain(); 
      }
      
    public static void main(String argv[])
      { new ATMMain();
      }

    // ATMMain constructor.
    // Create the ATM and simulated bank, plus the GUI - furnishing a frame for its
    // container, plus a thread to run the simulation (which executes the run()
    // method of this class).  Start the thread and we're off!

    public ATMMain()
      { 
        _theFrame = new Frame();
        _theFrame.setTitle("ATM number " + ATM_NUMBER + " at " + ATM_LOCATION);
        _theFrame.setResizable(false);
        
        _theBank = new Bank();
        _theATM = new ATM(ATM_NUMBER, ATM_LOCATION, _theBank, _theFrame);
        
        _theFrame.pack();
        _theFrame.show();
        
        _theThread = new Thread(this);
        _theThread.start();
      }
    
    // This method is run by the thread.  The program will terminate when the
    // ATM is turned off. 
    
    public void run()
      {
        Money initialCash = _theATM.startupOperation();
        _theATM.serviceCustomers(initialCash);
        
        System.exit(0); 
      }

    private Frame _theFrame;
    private Bank _theBank;
    private ATM _theATM;
    private Thread _theThread;
    
    // Private constants
    
    private static final int ATM_NUMBER = 42;
    private static final String ATM_LOCATION = "GORDON COLLEGE";
  }

//