[ Intro ]
   [ Requirements ]
   [ Domain Objects ]
   [ Use Cases ]
   [ State Diagram ]
   [ Interaction Diagram ] 
   
   [ CRC Cards ]
   [ Class Diagram ]
   [ Class Desc. Forms ]
   [ Operation Desc. Forms ]
   [ Code ]
   [ Executable ]
| Responsibility | Collaborator(s) | 
|---|---|
| Start up system operation | OperatorPanel | 
| Start a session for each customer as he/she arrives | Display CardReader Session | 
| Shut down on operator request | OperatorPanel | 
| Get PIN from customer | Display Keyboard | 
| Get customer choice from a menu of options | Display Keyboard | 
| Get amount entry (typed in) from customer | Display Keyboard | 
| Verify that sufficient cash is available for withdrawl | CashDispenser | 
| Dispense cash | CashDispenser | 
| Accept deposit envelope from customer | Display Envelope Acceptor | 
| Issue receipt to customer | ReceiptPrinter | 
| Require customer to re-enter PIN | Display Keyboard | 
| Inform customer of reason for failure of a transaction, and ask if he/she wants another | Display Keyboard | 
| Return ATM card to customer | CardReader | 
| Permanently retain customer card | Display CardReader | 
| [ Class Description Form ] | 
| Responsibility | Collaborator(s) | 
|---|---|
| Check for readable card inserted | |
| Return number read from card | |
| Eject card | |
| Retain card | |
| [ Class Description Form ] | 
| Responsibility | Collaborator(s) | 
|---|---|
| Display "Insert Card" screen | |
| Display "Enter PIN" screen | |
| Display menu of choices | |
| Display "Enter Amount" screen | |
| Display "Deposit Envelope" screen | |
| Display "Card unreadable" screen | |
| Display "Transaction failed because ... want another?" screen | |
| Display "Invalid PIN - re-enter" screen | |
| Display "Card retained" screen | |
| Echo input from the keyboard | |
| Clear current message from screen when no longer needed | |
| [ Class Description Form ] | 
| Responsibility | Collaborator(s) | 
|---|---|
| Read PIN | Display (echo *'s) | 
| Read choice from menu | |
| Read amount entry (typed) | Display (echo amount) | 
| [ Class Description Form ] | 
| Responsibility | Collaborator(s) | 
|---|---|
| Set initial cash on hand at startup | |
| Report cash available | |
| Dispense cash | |
| [ Class Description Form ] | 
| Responsibility | Collaborator(s) | 
|---|---|
| Accept envelope | |
| [ Class Description Form ] | 
| Responsibility | Collaborator(s) | 
|---|---|
| Print receipt | |
| [ Class Description Form ] | 
| Responsibility | Collaborator(s) | 
|---|---|
| Indicate state of on-off switch | |
| Get initial cash on hand from operator | |
| [ Class Description Form ] | 
| Responsibility | Collaborator(s) | 
|---|---|
| Perform session use case | ATM Transaction | 
| Perform invalid PIN extension | ATM Transaction | 
| Perform failed transaction extension | ATM | 
| Furnish card number to Transaction | |
| Furnish PIN to Transaction | |
| [ Class Description Form ] | 
| Responsibility | Collaborator(s) | 
|---|---|
| Allow customer to choose a transaction type then create an object of appropriate subclass | WithdrawlTransaction DepositTransaction TransferTransaction InquiryTransaction ATM | 
| Perform a particular transaction use case | WithdrawlTransaction DepositTransaction TransferTransaction InquiryTransaction Session | 
| [ Class Description Form ] | 
| Responsibility | Collaborator(s) | 
|---|---|
| Get specifics from customer | ATM | 
| Send to bank | Session Bank | 
| Dispense cash, issue receipt, and notify bank when complete | ATM Bank | 
| [ Class Description Form ] | 
| Responsibility | Collaborator(s) | 
|---|---|
| Get specifics from customer | ATM | 
| Send to bank | Session Bank | 
| Accept envelope, issue receipt, and notify bank when complete | ATM Bank | 
| [ Class Description Form ] | 
| Responsibility | Collaborator(s) | 
|---|---|
| Get specifics from customer | ATM | 
| Send to bank | Session Bank | 
| Issue receipt | ATM | 
| [ Class Description Form ] | 
| Responsibility | Collaborator(s) | 
|---|---|
| Get specifics from customer | ATM | 
| Send to bank | Session Bank | 
| Issue receipt | ATM | 
| [ Class Description Form ] | 
| Responsibility | Collaborator(s) | 
|---|---|
| Allow customer to choose an account type from a list of possibilities | ATM | 
| Initiate withdrawl | |
| Finish withdrawl | |
| Initiate deposit | |
| Finish deposit | |
| Do transfer | |
| Do inquiry | |
| Provide information about reason for rejection of a transaction | |
| [ Class Description Form ] |