Es un proyecto sencillo de gestión de una tienda de videojuegos que tiene algunos problemas de acoplamiento.
El sistema permite gestionar:
- Videojuegos: catálogo de productos con stock y precios
- Clientes: base de datos de clientes registrados
- Ventas: registro de transacciones con gestión automática de inventario
es.iesquevedo
├── Main.java # Punto de entrada
├── modelo/
│ ├── Cliente.java
│ ├── Videojuego.java
│ └── Venta.java
├── dao/
│ ├── ClienteRepository.java
│ ├── VideojuegoRepository.java
│ └── VentaRepository.java
├── service/
│ ├── ClienteService.java
│ ├── VideojuegoService.java
│ └── VentaService.java
├── ui/
│ └── ControladorConsola.java
└── util/
└── GsonFactory.java
- Java 21
- Maven para gestión de dependencias
- Gson 2.10.1 para persistencia JSON
mvn exec:javaCrea nueva rama que se llame "ioc".
git checkout -b iocDesacopla la aplicación según el principio de inversión de dependencias, inyectando las dependencias de forma manual.
- Debes crear interfaces y aplicar inyección de dependencias manual
Haz un commit comentando los cambios realizados.
Utiliza Weld para automatizar la inyección de dependencias.
Haz un commit comentando los cambios realizados.
Crear una prueba unitaria para el módulo buscarPorCodigo de VideojuegoRepository.
- Probar casos: videojuego existente, videojuego no existente
Haz un commit comentando los cambios realizados.
- Haz un merge a la rama principal
- Haz un último commit
- Solicita un PR al repositorio original
Entrega: Captura de GitHub donde se vea tu PR.
- ✅ Correcta aplicación del principio de Inversión de Dependencias
- ✅ Uso adecuado de interfaces para desacoplamiento
- ✅ Configuración correcta de Weld CDI
- ✅ Pruebas unitarias funcionales y significativas
- ✅ Commits claros y descriptivos
- ✅ PR correctamente formateado
Los módulos de alto nivel no deben depender de módulos de bajo nivel. Ambos deben depender de abstracciones.
Patrón de diseño que permite proporcionar las dependencias desde el exterior en lugar de crearlas internamente.
Implementación de referencia de Contexts and Dependency Injection para Java EE/Jakarta EE.
- El proyecto usa persistencia en JSON mediante archivos en
/data - La gestión de stock se actualiza automáticamente al procesar ventas
- Las validaciones de negocio están en la capa de servicio
El proyecto incluye datos precargados:
- 3 clientes registrados
- 4 videojuegos en catálogo (PS5, Xbox, PC, Switch)
- 2 ventas de ejemplo
Los archivos JSON se encuentran en /data/:
clientes.jsonvideojuegos.jsonventas.json