Entornos de Desarrollo - Unidad 5 - Prueba Práctica de Evaluación Final: Programación Orientada a Objetos
Duración: 2 horas
Valor total: 100 puntos
Instrucciones:
- Lee todas las preguntas cuidadosamente.
- Escribe el código y justifica tus decisiones cuando se indique.
- Comenta el código cuando sea necesario para mejorar la comprensión.
- Entrega tu código y respuestas al final de la sesión.
Parte 1: Diseño y Diagrama de Clases (30 puntos)
Instrucciones:
- Lee el enunciado a continuación y crea un diagrama de clases UML que resuelva el problema.
- Luego, implementa las clases en Java siguiendo el diseño propuesto en el diagrama.
- El diagrama debe incluir las relaciones correctas entre clases (composición, herencia, etc.) y la visibilidad de los atributos y métodos.
Enunciado:
Crea un sistema de gestión de una biblioteca. La biblioteca tiene varios Libros y Usuarios. Los usuarios pueden prestar libros. Un Libro tiene título, autor, y un número de ejemplares disponibles. Un Usuario tiene nombre, correo electrónico y un número máximo de libros que puede prestar.
- Los Libros pueden ser prestados o devueltos por los usuarios.
- Cada Usuario tiene un historial de libros que ha prestado.
- Los Libros tienen el atributo "número de ejemplares disponibles" y los Usuarios pueden tener un máximo de 5 libros prestados.
Requisitos:
- Implementa las siguientes clases:
- Libro: título, autor, ejemplares disponibles, y método para prestar un libro.
- Usuario: nombre, correo electrónico, número máximo de libros que puede tener prestados, y método para prestar/liberar libros.
- Biblioteca: lista de libros, lista de usuarios, y un método para registrar préstamos y devoluciones.
Evaluación:
Diagrama de clases (10 puntos):
- Correcta representación de las relaciones entre las clases (agregación, composición, etc.).
- Visibilidad correcta de los atributos y métodos (público, privado, protegido).
- Correcto uso de los métodos y atributos necesarios en el diseño.
Código de las clases (20 puntos):
- Implementación correcta de las clases
Libro
,Usuario
yBiblioteca
. - Correcta utilización de los métodos para prestar y devolver libros.
- Control de los ejemplares disponibles y el número máximo de libros prestados por usuario.
- Implementación correcta de las clases
Parte 2: Métodos y Pruebas Unitarias (40 puntos)
Instrucciones:
- Crea las pruebas unitarias usando JUnit para validar que las clases implementadas en la Parte 1 funcionen correctamente. Asegúrate de que se cubren los siguientes casos:
Enunciado de los casos a probar:
Préstamo de un libro:
Verifica que un usuario pueda prestar un libro si hay ejemplares disponibles.Devolución de un libro:
Verifica que un usuario pueda devolver un libro y que el número de ejemplares disponibles aumente.Número máximo de libros por usuario:
Verifica que un usuario no pueda tener más de 5 libros prestados al mismo tiempo.Historial de préstamos de un usuario:
Verifica que los libros prestados por un usuario se guarden en su historial correctamente.
Evaluación:
Pruebas unitarias (25 puntos):
- Las pruebas cubren todos los casos solicitados.
- Uso correcto de aserciones para verificar los resultados esperados.
- Asegúrate de que las pruebas unitarias se ejecuten correctamente y validen el comportamiento esperado de las clases.
Justificación y comentarios (15 puntos):
- Explicación clara de los métodos de prueba y de las decisiones tomadas para realizar las pruebas.
- Los comentarios en el código de las pruebas unitarias son adecuados y explican la lógica de cada prueba.
Parte 3: Extensión del sistema y Buenas Prácticas (30 puntos)
Instrucciones:
Realiza una extensión del sistema creado en la Parte 1, en la cual se agrega una funcionalidad adicional. Elige uno de los siguientes escenarios y desarrolla la funcionalidad en el código:
Escenario 1: Sistema de multa por retraso en la devolución.
- Agrega un atributo
fechaDevolucion
en la claseLibro
y un método para calcular las multas por días de retraso. - Si un libro se devuelve después de la fecha de devolución, el usuario debe pagar una multa.
- Agrega un atributo
Escenario 2: Clasificación de libros por género.
- Modifica la clase
Libro
para que incluya un campogénero
(por ejemplo, "Ficción", "No Ficción", etc.). - Crea un método en la clase
Biblioteca
que permita obtener una lista de libros de un género específico.
- Modifica la clase
Escenario 3: Sistema de recomendaciones de libros.
- Agrega una funcionalidad en la clase
Usuario
para recomendar libros basados en los libros que han leído previamente. - Crea un método
recomendarLibros()
que devuelva una lista de libros recomendados.
- Agrega una funcionalidad en la clase
- Requisitos:
- Desarrolla el código necesario para implementar la funcionalidad seleccionada.
- Los métodos deben ser claros y bien documentados.
- Se valorará la organización del código y la correcta aplicación de principios de programación orientada a objetos.
Evaluación:
Funcionalidad añadida (20 puntos):
- Implementación correcta de la funcionalidad seleccionada.
- El código es eficiente y sigue buenas prácticas de programación orientada a objetos.
Código limpio y buenas prácticas (10 puntos):
- Código organizado y bien estructurado.
- Uso adecuado de nombres descriptivos para clases, métodos y variables.
- Comentarios y documentación clara en el código.
Criterios de Evaluación:
Parte | Puntos |
---|---|
Parte 1: Diseño y Diagrama de Clases | 30 |
- Diagrama de clases | 10 |
- Implementación de clases en Java | 20 |
Parte 2: Métodos y Pruebas Unitarias | 40 |
- Pruebas unitarias | 25 |
- Justificación y comentarios | 15 |
Parte 3: Extensión del sistema | 30 |
- Funcionalidad añadida | 20 |
- Buenas prácticas y código limpio | 10 |
Total | 100 |
Notas Importantes:
- Plagios o copias de código de compañeros u otros sitios resultarán en una calificación de 0 puntos en la prueba.
- Claridad en el código y la explicación será valorada. Asegúrate de comentar tu código y justificar tus decisiones.
Comentarios
Publicar un comentario