Skip to content

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#

Concept What it is Fundamentals
State machine ATM states mvcc-isolation-levels
Idempotency reversal-safe withdrawals idempotency-retries
Distributed transactions bank switch saga distributed-transactions
Resilience patterns dispenser failure recovery resilience-patterns