[ Intro ]
   [ Requirements ]
   [ Domain Objects ]
   [ Use Cases ]
   [ CRC Cards ]
   [ Class Diagram ]
   
   [ Class Description Forms ]
   [ Operation Description Forms ]
   [ Code ]
   [ Executable ]
| Name | ATM | 
| Base class(es) | |
| Purpose | Manage the ATM and component parts | 
| States | running | 
| stopped | |
| Constructors | ATM(number, location) | 
| Operations | |
| Mutators | startupOperation() | 
| serviceCustomers(initialCash) | |
| Accessors | getPIN() | 
| getTransactionChoice() | |
| getDoAnotherTransactionChoice() | |
| getAccountChoice(purpose) | |
| getWithdrawlAmountChoice() | |
| getAmountEntry() | |
| checkIfCashAvailable(amount) | |
| dispenseCash(amount) | |
| acceptEnvelope() | |
| issueReceipt(cardNumber, serialNumber, description, amount, balance, availableBalance) | |
| reEnterPIN() | |
| reportRejection(reason) | |
| ejectCard() | |
| retainCard() | |
| number() | |
| Fields | _state | 
| _number | |
| _location | |
| _cardReader | |
| _display | |
| _keyboard | |
| _cashDispenser | |
| _envelopeAcceptor | |
| _receiptPrinter | |
| _operatorPanel | 
View C++ class declaration code
| Name | CardReader | 
| Base class(es) | |
| Purpose | Manage the magnetic stripe card reader | 
| States | card not inserted | 
| card inserted but unreadable | |
| card inserted and readable | |
| Constructors | CardReader() | 
| Operations | |
| Mutators | ejectCard() | 
| retainCard() | |
| checkForCardInserted() | |
| Accessors | cardNumber() | 
| Fields | _status | 
| _cardNumberRead | 
View C++ class declaration code
| Name | Display | 
| Base class(es) | |
| Purpose | Manage the video display unit | 
| States | Each screen that can be displayed constitutes a distinct state | 
| Constructors | Display() | 
| Operations | |
| Mutators | displayScreen(whichScreen, extraInfo) | 
| clearDisplay() | |
| Accessors | |
| Fields | 
View C++ class declaration code
| Name | Keyboard | 
| Base class(es) | |
| Purpose | Manage the keys used for customer input | 
| States | |
| Constructors | Keyboard() | 
| Operations | |
| Mutators | readPIN() | 
| readTransactionChoice() | |
| readDoAnotherTransactionChoice() | |
| readAccountChoice() | |
| readWithdrawlAmountChoice() | |
| readAmountEntry() | |
| pressEnterToContinue() | |
| Accessors | |
| Fields | 
View C++ class declaration code
| Name | CashDispenser | 
| Base class(es) | |
| Purpose | Manage the cash dispenser | 
| States | |
| Constructors | CashDispenser() | 
| Operations | |
| Mutators | setCash(initialCash) | 
| dispenseCash(amount) | |
| Accessors | currentCash() | 
| Fields | _currentCash | 
View C++ class declaration code
| Name | EnvelopeAcceptor | 
| Base class(es) | |
| Purpose | Manage the slot that accepts a deposit envelope from the customer | 
| States | |
| Constructors | EnvelopeAcceptor() | 
| Operations | |
| Mutators | acceptEnvelope() | 
| Accessors | |
| Fields | 
View C++ class declaration code
| Name | ReceiptPrinter | 
| Base class(es) | |
| Purpose | Manage the printer that produces customer receipts | 
| States | |
| Constructors | ReceiptPrinter() | 
| Operations | |
| Mutators | 
	printReceipt(theATMnumber, theATMlocation, cardNumber, serialNumber,description, amount, balance, availableBalance)  | 
| Accessors | |
| Fields | 
View C++ class declaration code
| Name | OperatorPanel | 
| Base class(es) | |
| Purpose | Manage the panel that allows the operator to start/stop the machine, and to enter initial cash amount.  | 
| States | Switch in running position | 
| Switch in stopped position | |
| Constructors | OperatorPanel() | 
| Operations | |
| Mutators | switchOn() | 
| getInitialCash() | |
| Accessors | |
| Fields | 
View C++ class declaration code
| Name | Session | 
| Base class(es) | |
| Purpose | Perform a session use case | 
| States | running | 
| aborted due to repeated invalid PINs | |
| Constructors | Session(cardNumber) | 
| Operations | |
| Mutators | doSessionUseCase() | 
| doInvalidPINExtension() | |
| Accessors | cardNumber() | 
| PIN() | |
| Fields | _state | 
| _cardNumber | |
| _PIN | |
| _currentTransaction | 
View C++ class declaration code
| Name | Transaction | 
| Base class(es) | |
| Purpose | Abstract common features of the various types of transaction use cases  | 
| States | |
| Constructors | Transaction(session) | 
| makeTransaction(type, session) | |
| Operations | |
| Mutators | doTransactionUseCase() | 
| (abstract) getTransactionSpecificsFromCustomer() | |
| (abstract) sendToBank() | |
| (abstract) finishApprovedTransaction() | |
| Accessors | |
| Fields | _session | 
| _serialNumber | |
| _newBalance | |
| _availableBalance | |
| static _lastSerialNumberAssigned | 
View C++ class declaration code
| Name | WithdrawlTransaction | 
| Base class(es) | Transaction | 
| Purpose | Perform a withdrawl transaction use case | 
| States | |
| Constructors | WithdrawlTransaction(session) | 
| Operations | |
| Mutators | getTransactionSpecificsFromCustomer() | 
| sendToBank() | |
| finishApprovedTransaction() | |
| Accessors | |
| Fields | _fromAccount | 
| _amount | 
View C++ class declaration code
| Name | DepositTransaction | 
| Base class(es) | Transaction | 
| Purpose | Perform a deposit transaction use case | 
| States | |
| Constructors | DepositTransaction(session) | 
| Operations | |
| Mutators | getTransactionSpecificsFromCustomer() | 
| sendToBank() | |
| finishApprovedTransaction() | |
| Accessors | |
| Fields | _toAccount | 
| _amount | 
View C++ class declaration code
| Name | TransferTransaction | 
| Base class(es) | Transaction | 
| Purpose | Perform a transfer transaction use case | 
| States | |
| Constructors | TransferTransaction(session) | 
| Operations | |
| Mutators | getTransactionSpecificsFromCustomer() | 
| sendToBank() | |
| finishApprovedTransaction() | |
| Accessors | |
| Fields | _fromAccount | 
| _toAccount | |
| _amount | 
View C++ class declaration code
| Name | InquiryTransaction | 
| Base class(es) | Transaction | 
| Purpose | Perform an inquiry transaction use case | 
| States | |
| Constructors | InquiryTransaction(session) | 
| Operations | |
| Mutators | getTransactionSpecificsFromCustomer() | 
| sendToBank() | |
| finishApprovedTransaction() | |
| Accessors | |
| Fields | _fromAccount | 
View C++ class declaration code
| Name | Bank | 
| Base class(es) | |
| Purpose | Manage communications with the bank | 
| States | |
| Constructors | Bank() | 
| Operations | |
| Mutators | 
	initiateWithdrawl(cardNumber, PIN, ATMnumber, serialNumber, from, amount,newBalance, availableBalance)  | 
| finishWithdrawl(ATMnumber, serialNumber, succeeded) | |
| 
	initiateDeposit(cardNumber, PIN, ATMnumber, serialNumber, to, amount, newBalance, availableBalance)  | |
| finishDeposit(ATMnumber, serialNumber, succeeded) | |
| 
	doTransfer(cardNumber, PIN, ATMnumber, serialNumber, from, to, amount, newBalance, availableBalance)  | |
| 
		doInquiry(cardNumber, PIN, ATMnumber, serialNumber, from, newBalance, availableBalance)  | |
| Accessors | accountName(type) | 
| rejectionDescription(code) | |
| Fields |