Vending Machine System - State Pattern Implementation

This is an implementation of the State design pattern for a vending machine system where the machine changes its behavior based on its internal state, completely eliminating the need for massive if/else conditional blocks.

Problem Statement

Building the software for a Vending Machine that transitions between four distinct states: Idle, Has Money, Dispensing, and Out of Stock. The challenge is ensuring that actions (like inserting money or selecting an item) behave differently depending on the current state, without hardcoding conditional logic into the main machine class.

Key Challenge: