U4.7 · Reto personal: gestor de inventario¶
Proyecto final de POO para Java. Sustituye al juego del ahorcado: repasa casi todo lo aprendido, sin ser enorme. Piénsalo como un reto personal, no como un examen.
Ejercicio 4.16¶
Gestor de inventario de una tienda. Programa en consola el inventario de una tienda. Cada nivel se puede entregar por separado: empieza por el básico y sube cuando te apetezca.
Piezas mínimas
Producto(clase abstracta): código, nombre, precio base, stock y el método abstractoprecioFinal().- Subclases:
ProductoFisico(peso; suma gastos de envío),ProductoDigital(sin stock físico) yPerecedero(fecha de caducidad; rebaja el precio si caduca en menos de 3 días). Inventario: unMap<String, Producto>indexado por código.Venta: unrecordcon producto, unidades, total y fecha.
Nivel básico
- Menú de consola: añadir producto, eliminar, buscar por código (devuelve un
Optional), listar y salir. - Vender unidades de un producto y actualizar el stock.
- Mostrar las ventas realizadas.
Nivel medio
- Excepciones propias:
ProductoNoEncontradoyStockInsuficiente. - Una interfaz
Descuentocondouble aplicar(double precio)e implementaciones: porcentaje, importe fijo y 2x1. Asocia un descuento opcional a cada producto. - Un
enum Categoriay listado de productos por categoría.
Reto extra (opcional)
- Informes con streams: los 3 productos más vendidos, ingresos totales y productos con stock bajo (menos de 5), ordenados por stock.
- Guarda y carga el inventario en un archivo CSV.
- Escribe pruebas con JUnit para
Inventarioy para el cálculo de precios.
Qué repasas
| Concepto | Dónde aparece |
|---|---|
| Herencia y clases abstractas | Producto y sus subclases |
| Polimorfismo | precioFinal() en una lista de productos |
| Interfaces | Descuento |
record y enum |
Venta, Categoria |
| Colecciones | Map, List, Set |
| Excepciones propias | ProductoNoEncontrado, StockInsuficiente |
Optional y streams |
búsqueda e informes |
| Entrada/salida y JUnit | CSV y pruebas (reto extra) |
Consejo: dibuja antes la jerarquía de clases en papel y empieza por Producto y Inventario. Añade los descuentos al final: así ves lo que aporta una interfaz.