Actividad 6: Expandiendo InputValidator con Predicados y Function
Objetivo
El objetivo de esta actividad es expandir la clase InputValidator para incluir funciones genéricas que utilicen predicados y funciones para validar entradas de usuario de manera más flexible. Aprenderás a combinar predicados y funciones para crear validaciones personalizadas y reutilizables.
Descripción del Problema
Eres un desarrollador de software que ha creado una clase InputValidator para validar diferentes tipos de entradas de usuario. Ahora, deseas expandir esta clase para incluir funciones genéricas que utilicen predicados y funciones para validar entradas de manera más flexible. Quieres que estas funciones permitan a los usuarios definir sus propias reglas de validación utilizando predicados y funciones, lo que hará que la clase sea más versátil y reutilizable.
Instrucciones
- Abre la clase
InputValidatordel ejemplo 4 y sobrecarga el métodovalidateInputpara aceptar un predicado adicional que se utilizará para validar la entrada del usuario. El nuevo método debe tener la siguiente firma:public static <T> T validateInput(String message, Class<T> type, Predicate<T> validator) - Sobrecarga el método
validateInputpara aceptar ahora el mensaje y un arreglo de objetos de tipoTque representen opciones válidas para la entrada del usuario. El nuevo método debe tener la siguiente firma:public static <T> T validateInput(String message, T[] validOptions) - Maneja adecuadamente las excepciones que puedan surgir durante la validación, asegurándote de mostrar mensajes de error claros y específicos utilizando los mensajes definidos en el
Enumque crearás en el siguiente paso. - Crea un
EnumllamadoMessagesque contenga mensajes empleados en la claseInputValidatorpara mejorar la legibilidad y mantenibilidad del código. Por ejemplo:public enum Messages { INVALID_INPUT("Entrada no válida. Por favor, ingrese un valor válido."), EMPTY_FIELD("El campo no puede estar vacío. Por favor, ingrese un valor válido."), UNSUPPORTED_TYPE("Tipo de dato no soportado: "), VALIDATION_ERROR_TITLE("Error de Validación"); private final String message; Messages(String message) { this.message = message; } public String getMessage() { return message; } } - Modifica el método
validateInputpara utilizar los mensajes delEnumen lugar de cadenas de texto hardcodeadas. - En el método
main, prueba las nuevas funciones de validación utilizando predicados personalizados y opciones válidas para diferentes tipos de datos. Asegúrate de tomar capturas de pantalla de la ejecución del programa mostrando el uso de las nuevas funciones de validación y los mensajes de error personalizados. - Agrega comentarios en el código para explicar la funcionalidad de cada parte y cómo se combinan los predicados y funciones para crear validaciones personalizadas.
- Compila y ejecuta tu programa para asegurarte de que todas las funcionalidades funcionen correctamente.
InputValidator para incluir funciones genéricas que utilicen predicados y funciones, estarás mejorando significativamente la flexibilidad y reutilización de tu código. Los predicados permiten definir reglas de validación personalizadas de manera clara y concisa, mientras que el uso de un Enum para los mensajes mejora la mantenibilidad del código al centralizar los mensajes de error en un solo lugar. Esta actividad te ayudará a comprender cómo combinar diferentes conceptos de programación funcional en Java para crear soluciones más robustas y adaptables.Entrega
En un solo documento PDF, incluye:
- Portada con el título de la actividad, la lista de integrantes del equipo y el nombre del curso.
- Código fuente de la clase
InputValidatorcon las funciones genéricas implementadas y elEnumde mensajes debidamente documentados. - Capturas de pantalla de la ejecución del programa mostrando el uso de las nuevas funciones de validación con predicados personalizados y opciones válidas, así como los mensajes de error personalizados.
- Una breve explicación de cómo el uso de predicados y funciones genéricas mejora la flexibilidad y reutilización del código en la clase
InputValidator, y cómo elEnumde mensajes contribuye a la mantenibilidad del código.
Actividad 5: Implementando una clase genérica
En esta actividad, aprenderás a implementar una clase genérica en Java. Las clases genéricas permiten crear clases que pueden trabajar con diferentes tipos de datos de manera flexible y segura, lo que es fundamental para escribir código reutilizable y mantenible.
Actividad 7: Gestor de Biblioteca con InputValidator
Desarrolla un gestor de biblioteca que permita a los usuarios agregar, eliminar y buscar libros utilizando la clase InputValidator para validar las entradas.