//ATM Simulation Interface - Individual Sessions

ATM Simulation Interface - Individual Sessions

 * Example ATM simulation - file session.h
 * This file declares the class that represents a single customer session
 * with the ATM, implementing the corresponding use case.
 * Copyright (c) 1996, 1997 - Russell C. Bjork

class Transaction;   // Session and Transaction refer mutually to one another,
                     // so one needs an incomplete declaration to start us off


Interface for class Session

class Session
    /* PURPOSE: Manage a session with a single user.


        Session(int cardNumber, ATM & atm, Bank & bank);

        // Run session until user is through or some exceptional condition
        // prevents further processing

        void doSessionUseCase();

        // Force user to re-enter PIN if bank says original PIN was invalid.
        // Return final code from resubmission to bank.

        Status::Code doInvalidPINExtension();

        // Report a failed transaction to the user, and ask if he/she wants
        // to do another.
        bool doFailedTransactionExtension(Status::Code reason);
        // Each transation obtains this information from the session when it
        // is needed

        int cardNumber() const;
        int PIN() const;


        int                       _cardNumber;
        ATM &                     _atm;
        Bank &                    _bank;
        int                       _PIN;
        Transaction *             _currentTransaction;