Actividades

Actividad 6: Expandiendo InputValidator con Predicados y Function

En esta actividad, expandirás 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.

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

  1. Abre la clase InputValidator del ejemplo 4 y sobrecarga el método validateInput para 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)
    
  2. Sobrecarga el método validateInput para aceptar ahora el mensaje y un arreglo de objetos de tipo T que 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)
    
  3. 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 Enum que crearás en el siguiente paso.
  4. Crea un Enum llamado Messages que contenga mensajes empleados en la clase InputValidator para 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;
       }
    }
    
  5. Modifica el método validateInput para utilizar los mensajes del Enum en lugar de cadenas de texto hardcodeadas.
  6. 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.
  7. 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.
  8. Compila y ejecuta tu programa para asegurarte de que todas las funcionalidades funcionen correctamente.
Al expandir la clase 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 InputValidator con las funciones genéricas implementadas y el Enum de 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 el Enum de mensajes contribuye a la mantenibilidad del código.
Copyright Jesús Aurelio Castro Magaña © 2026