La Librería
Sistema de gestión de biblioteca para la terminal en Java 21: libros, socios y préstamos con reglas de negocio reales, persistido en JSON.
- Java
- Maven
El caso de estudio
- Problema
- Administrar libros, socios y préstamos con reglas que se cumplan siempre —cupos, límites por tipo de socio, préstamos no duplicados— sin dejar nunca el estado en un valor imposible.
- Solución
- Arquitectura por capas con dependencias hacia adentro y una interfaz genérica Repository<T>; dominio rico donde las entidades protegen sus invariantes y las reglas de préstamo viven en un enum por tipo de socio.
- Resultado
- 61 pruebas con JUnit 5, fat jar ejecutable con Maven y documentación de arquitectura, dominio y decisiones de diseño. Licencia MIT.
Proceso
Proceso de desarrollo
El razonamiento detrás de las decisiones técnicas: por qué se eligió cada tecnología, qué retos surgieron y cómo se resolvieron.
- 01
Capas y un Repository<T> genérico
La arquitectura tiene las dependencias apuntando hacia adentro y una interfaz genérica Repository<T> que abstrae el almacenamiento. Gracias a eso, hoy persisto en JSON pero podría cambiar a una base de datos tocando una sola implementación, sin que el dominio se entere.
- 02
Un dominio que protege sus reglas
En vez de dejar las validaciones dispersas, las entidades protegen sus propias invariantes: un préstamo no puede existir si no hay ejemplares, y las reglas por tipo de socio (cupos, límites) viven en un enum. El estado nunca queda en un valor imposible, porque el objeto se niega a construirse mal.
- 03
Confianza a través de las pruebas
Escribí 61 pruebas con JUnit 5 sobre las reglas de negocio, que son la parte crítica del sistema. Esa red de seguridad me permitió refactorizar sin miedo y documentar las decisiones de diseño. El proyecto se empaqueta como un fat jar ejecutable con Maven.
Repositorios
Commits
- Cambios varios
0cd85bcEduardohace 3 semanas
- Initial commit
7435d4cEduardohace 3 semanas