Skip to content

Vending Machine — Simple#

Problem statement (interviewer prompt)

Design the software for a vending machine: insert coins / scan card, browse + select an item, validate stock, vend, return change. Model the state machine (Idle / Selecting / Dispensing / Refunding), inventory, payment methods, and the maintenance interface.

classDiagram
  class VendingMachine {
    +select(item)
    +pay(amount)
    +dispense()
    +cancel()
  }
  class Inventory
  class CashRegister
  class State
  VendingMachine --> Inventory
  VendingMachine --> CashRegister
  VendingMachine --> State