Vending Machine Kata

vending-machine-kata

Descripción

La Vending Machine Kata es un ejercicio de programación que simula el funcionamiento de una máquina expendedora. El objetivo es diseñar e implementar un sistema que gestione la compra de productos, el manejo de inventario y la devolución de cambio. Es una excelente oportunidad para practicar el diseño orientado a objetos, la gestión de estados y la implementación de lógica de negocio compleja.

Objetivo de la kata

El objetivo de esta kata es crear una máquina expendedora que pueda:

  • Mostrar el inventario de productos disponibles.
  • Aceptar el dinero del cliente.
  • Dispensar productos.
  • Devolver el cambio adecuado.
  • Manejar situaciones de inventario insuficiente o cambio insuficiente.

Instrucciones

  1. Definir el modelo:
  • Define las clases necesarias para representar la máquina expendedora, los productos y el inventario.
  • Define las clases y métodos para manejar el dinero (monedas y billetes).
  1. Implementar la lógica de negocio:
  • Implementa métodos para agregar dinero a la máquina.
  • Implementa métodos para seleccionar un producto y dispensarlo si se han cumplido todas las condiciones.
  • Implementa la lógica para devolver el cambio adecuado.
  1. Manejo de estados y excepciones:
  • Asegúrate de manejar correctamente los estados de la máquina (por ejemplo, esperando dinero, dispensando producto, devolviendo cambio).
  • Implementa la lógica para manejar situaciones excepcionales como inventario insuficiente o falta de cambio.
  1. Pruebas:
  • Escribe pruebas unitarias para verificar el correcto funcionamiento de cada componente de la máquina expendedora.
  • Asegúrate de probar casos límite y situaciones excepcionales.
  • TypeScript

    Solución con TypeScript v1