Sigue estos pasos para resolver el proyecto. Cada // TODO: es un paso.
Archivo: Plato.java
- Crea atributos: id, nombre, categoria, precio
- Constructor que reciba los 4 parámetros
- Getters: getId(), getNombre(), getCategoria(), getPrecio()
- Método: getInfo() - retorna "1 | Ensalada | Entrantes | 8.50€"
Test: Crea 3 platos diferentes y prueba
Archivo: Pedido.java
- Atributos: id, items (ArrayList), cantidades (ArrayList), estado (String)
- Constructor que reciba id
- Inicializa ArrayList
- Estado por defecto: "pendiente"
- Método: agregarItem(Plato, cantidad)
- Valida cantidad > 0
- Agrega a items y cantidades
- Método: verPedido() - imprime todos los items
- Método: calcularSubtotal() - suma (precio × cantidad)
- Método: cambiarEstado(nuevoEstado)
- Opciones: "pendiente", "en_prep", "listo"
- Método: eliminarItem(int index)
- Método: estaVacio() - retorna true si no hay items
Test: Crea un pedido, agrega items, calcula subtotal
Archivo: Restaurante.java
- Atributos: menu (ArrayList), pedidos (ArrayList), contadorPedidos (int)
- Constructor: inicializa ArrayList y contador
- Método: cargarMenu()
- Crea 8-10 platos de ejemplo
- Distribuye en categorías: Entrantes, Platos, Bebidas, Postres
- Agrega a ArrayList
- Método: mostrarMenu() - imprime todos
- Método: mostrarPorCategoria(categoria)
- Filtra y muestra solo de esa categoría
- Método: buscarPlato(nombre) - retorna Plato o null
- Método: crearPedido() - retorna nuevo Pedido
- Método: agregarAlPedido(Pedido actual, nombre, cantidad)
- Busca plato
- Valida que existe
- Agrega al pedido
- Método: confirmarPedido(Pedido)
- Valida que no esté vacío
- Agrega a ArrayList de pedidos
- Incrementa contador
- Retorna ID del pedido
- Método: mostrarPedidosPendientes() - filtra por estado
- Método: cambiarEstadoPedido(idPedido, nuevoEstado)
- Busca el pedido por ID
- Cambia estado
- Método: generarCuenta(idPedido, porcentajePropina)
- Busca pedido
- Calcula subtotal
- Calcula propina: subtotal × propina / 100
- Imprime cuenta
- Guarda en archivo "venta_XXX.txt"
- Cambia estado a "listo"
Test: Carga menú, crea pedido, agrega items, confirma, genera cuenta
Archivo: Main.java
- Crea Restaurante y carga menú
- Variable:
pedidoActual = null - Menú principal con opciones:
-
- Ver menú
-
- Ver por categoría
-
- Nuevo pedido
-
- Agregar al pedido actual
-
- Ver pedido actual
-
- Eliminar del pedido
-
- Confirmar pedido
-
- Ver pedidos pendientes
-
- Generar cuenta
-
- Cambiar estado pedido
-
- Salir
-
- While loop que no termina hasta opción 11
- Switch para cada opción
- Try-catch para validar entrada
- Manejo de Scanner y nextLine()
- Plato creada y funcional
- Pedido creada y funcional
- Restaurante creada y funcional
- Main con menú completo (11 opciones)
- Generación de cuentas
- Validación de errores
- Archivos generados correctamente
- Programa sin crashes
- Cambio de estado funcional
- Sigue el orden (Plato → Pedido → Restaurante → Main)
- Prueba cada clase antes de pasar a la siguiente
- Los TODO están en orden, no los saltes
- Compara con
resuelto/si te atascas - Lee los comentarios de cada archivo
- Prueba cambiar estado de pedidos
¡Cuando termines, habrás creado un sistema profesional de restaurante! 🚀