Se pretende desarrollar un sistema web para la gestión de una biblioteca con los siguientes
requisitos, que lo pueden usar tres usuarios diferentes con la siguiente funcionalidad
• Administrador de biblioteca
o Da de alta a nuevos títulos en el catálogo, para lo cual es requisito indispensable
que al menos añada un ejemplar.
o Añadir nuevos ejemplares, es decir, un nuevo libro (copia) de un título.
o Borrar o actualizar un título existente.
o Borrar un ejemplar (por ejemplo, por estar en mal estado, extravío, etc.)
• Bibliotecario/a:
o Prestar ejemplar. En este caso el sistema comprobará que el usuario no tiene el
cupo de libros para sacar completo, ni tiene penalizaciones pendientes.
o Gestionar devolución de un ejemplar. En el caso de devolución con retardo, el
sistema aplicará una penalización al usuario que se tendrá en cuenta para
futuros préstamos.
o El trabajador podrá hacer la reserva de un ejemplar cuando un usuario desee
un ejemplar que no está disponible. Al realizar un préstamo, todas las reservas
para dicho ejemplar se borrarán.
• Usuario:
o A través del terminal en la biblioteca podrá de forma autónoma hacer la misma
funcionalidad que el trabajador de la biblioteca.
Visual Paradigm Standard([Link](Computer Science Shool))
Sistema Biblioteca
<<Include>> Borrar
Hacer Prestamo Alta Título
Reservas
<<Include>>
Bibliotecario <<Extend>>
Hacer Devolución
Alta Ejemplar
extension points Aplicar Penalización
Entrega retrasada? Admin
Baja Ejemplar
extension points
Reservar Ejemplar último ejemplar?
Usuario <<Extend>>
Actualizar/Borrar Título
Visual Paradigm Standard([Link](Computer Science Shool))
presentacion
TitulosForm PrestamosForm
domain
controllers
GestorTitulos GestorPrestamos GestorPenalizaciones
+altaTítulo(titulo : String, isbn : String, autores : String[]) : Titulo +realizarPrestamo(isbn : String, idEjemplar : String, idUsuario : String) +aplicarPenalizacion(u : Usuario)
+actualizarTitulo(t : Titulo) +realizarDevolucion(isbn : String, idEjemplar : String, idUsuario : String) +comprobarPenalización(u : Usuario)
+borrarTitulo(t : Titulo) +realizarReserva(idUsuario : String, isbn : String)
+altaEjemplar(t : Titulo)
+bajaEjemplar(t : Titulo)
entities
Ejemplar
-id : String
ejemplares 1..*
1 titulo
1 prestamos Prestamo
Titulo 0..* usuario
-fechaInicio : Date Usuario
-titulo : String titulo 0..* -fechaFin : Date prestamos 1 -id : String
Autor -isbn : String -activo : Boolean -nombre : String
-nombre : String -numReserva : String
1..* titulos -apellidos : String
-apellido : String usuario
autores * 1 reservas Reserva 0..* -fechaFinPenalizacion : Date
0..* -fecha : Date -attribute
reservas
1
titulo
Libro Revista
persistencia E
<<Singleton>> EntityDAO
reservaDAO
-instanciaAgenteBD AgenteBD +select(id : String) : E
tituloDAO autorDAO
+conectar() : boolean +insert(entity : E) : int
+desconectar() : boolean +update(entity : E) : int prestamoDAO
-getAgente() : AgenteBD 1 ejemplarDAO +delete(entity : E) : int
1-insert(sql : String) : int
1
-select(sql : String) : ResultSet TituloDAO usuarioDAO
-update(sql : String) : int 1
1 1 1
-delete(sql : String) : int
EjemplarDAO AutorDAO PrestamoDAO ReservaDAO UsuarioDAO
LibroDAO RevistaDAO