ATM Machine — Detailed
classDiagram
direction TB
class ATM {
-state: ATMState
-reader: CardReader
-dispenser: CashDispenser
-depositSlot: DepositSlot
-display: Display
-keypad: Keypad
-bank: BankSwitch
-session: Session
+insertCard(c)
+enterPin(p)
+withdraw(amount)
+deposit()
+balance()
+eject()
}
class ATMState {
<<interface>>
+next(atm, input)
}
class IdleState
class HasCardState
class AuthenticatedState
class TransactionState
class OutOfServiceState
class CardReader
class CashDispenser
class DepositSlot
class Display
class Keypad
class Receipt
class BankSwitch {
+authenticate(card, pin)
+authorize(tx)
+debit(account, amount)
+credit(account, amount)
+balance(account)
}
class Transaction {
<<interface>>
+execute(atm)
}
class Withdraw
class Deposit
class Balance
class Transfer
ATM --> ATMState
ATMState <|.. IdleState
ATMState <|.. HasCardState
ATMState <|.. AuthenticatedState
ATMState <|.. TransactionState
ATMState <|.. OutOfServiceState
ATM *-- CardReader
ATM *-- CashDispenser
ATM *-- DepositSlot
ATM *-- Display
ATM *-- Keypad
ATM --> BankSwitch
ATM ..> Transaction
Transaction <|.. Withdraw
Transaction <|.. Deposit
Transaction <|.. Balance
Transaction <|.. Transfer
Glossary & fundamentals