Enunciado:
Fase 2: El Barista Avanzado (Más Bebidas y Opciones)
En esta fase, expandiremos las capacidades de nuestra cafetera para incluir nuevas bebidas y opciones de personalización, así como una gestión básica de mantenimiento.
Nuevas Recetas Disponibles (cantidades fijas):
Se añade un nuevo depósito para leche, también con una capacidad máxima de 1000 ml.
Café con Leche: Necesita 30 ml de café, 50 ml de agua y 100 ml de leche.
Café Cortado: Necesita 40 ml de café, 10 ml de agua y 20 ml de leche.
Café Latte: Necesita 20 ml de café, 30 ml de agua y 150 ml de leche.
Nuevas Funcionalidades Requeridas:
Soporte para Depósito de Leche: Integren el nuevo depósito de leche, aplicando las mismas reglas de verificación y descuento de la Fase 1.
Menú Extendido: El menú de bebidas debe incluir todas las opciones (Espresso Fuerte, Suave, Café con Leche, Cortado, Latte).
Preparación Personalizada (Opcional): Además de las recetas fijas, el usuario debe tener una opción para preparar un "Café Personalizado". Para esta opción, el usuario deberá especificar las cantidades deseadas de café, agua y leche.
Las mismas reglas de verificación de ingredientes y aviso al usuario aplican a las preparaciones personalizadas.
Se deben establecer límites razonables para las cantidades personalizadas (ej. máximo 300 ml de cualquier ingrediente por bebida para evitar desbordamientos o vaciar depósitos).
Contador de Preparaciones y Mantenimiento:
La cafetera debe llevar un registro del número total de bebidas preparadas.
Después de cada 5 bebidas preparadas, la cafetera debe sugerir una "limpieza de residuos" (simplemente un mensaje al usuario, no requiere lógica de limpieza compleja, solo resetear el contador de preparaciones).
Estado Detallado de Depósitos: Al mostrar el estado de los depósitos, incluyan también la cantidad de leche.
Consideraciones Técnicas Adicionales:
Piensen en cómo refactorizar su código de la Fase 1 para acomodar fácilmente las nuevas bebidas y el depósito de leche. La modularidad y la reutilización de código serán clave aquí.
Consideren cómo manejar la entrada de usuario para las cantidades personalizadas de manera robusta (ej. ¿qué pasa si el usuario ingresa texto en lugar de números?).