Es un proyecto sencillo de gestión de una biblioteca con sistema de préstamos que tiene algunos problemas de acoplamiento.
El sistema permite gestionar:
- Libros: catálogo con control de ejemplares disponibles
- Socios: registro de usuarios de la biblioteca
- Préstamos: sistema de préstamo con control de fechas y devoluciones
org.biblioteca
├── Aplicacion.java # Punto de entrada
├── entidades/
│ ├── Socio.java
│ ├── Libro.java
│ └── Prestamo.java
├── repositorio/
│ ├── AlmacenSocios.java
│ ├── AlmacenLibros.java
│ └── AlmacenPrestamos.java
├── negocio/
│ ├── GestionSocios.java
│ ├── GestionLibros.java
│ └── GestionPrestamos.java
├── interfaz/
│ └── MenuPrincipal.java
└── herramientas/
└── JsonUtil.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 consultarPorIsbn de AlmacenLibros.
- Probar casos: libro existente, libro 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
/datos - El sistema controla ejemplares disponibles automáticamente
- Se detectan préstamos retrasados al visualizarlos
- Las validaciones de negocio están en la capa de gestión
El proyecto incluye datos precargados:
- 3 socios registrados
- 5 libros en el catálogo (literatura clásica y contemporánea)
- 3 préstamos (2 activos, 1 devuelto)
Los archivos JSON se encuentran en /datos/:
socios.jsonlibros.jsonprestamos.json
numeroSocio: Identificador únicoapellidos: Apellidos del socionombre: Nombre del sociodireccion: Dirección postaltelefono: Número de contacto
isbn: Identificador único (ISBN)titulo: Título de la obraautor: Nombre del autoreditorial: Casa editorialejemplaresTotales: Total de ejemplaresejemplaresDisponibles: Ejemplares disponibles para préstamo
identificador: ID único del préstamoisbnLibro: ISBN del libro prestadonumeroSocio: Número del sociofechaPrestamo: Fecha de iniciofechaDevolucionPrevista: Fecha límite de devoluciónfechaDevolucionReal: Fecha real de devolución (null si activo)activo: Estado del préstamo
- Añadir nuevos libros al catálogo
- Eliminar libros del sistema
- Consultar el catálogo completo
- Registrar nuevos socios
- Dar de baja socios
- Listar todos los socios
- Realizar préstamos (con fecha de devolución configurable)
- Registrar devoluciones de libros
- Ver préstamos activos
- Detectar préstamos retrasados
- Control automático de disponibilidad de ejemplares