Actividades

Actividad 9: gestión de una empresa agroalimentaria

Desarrolla un programa para gestionar una empresa agroalimentaria que permita a los usuarios ingresar información sobre los productos, como el nombre, la cantidad, el precio y la fecha de vencimiento. Utiliza la clase InputValidator para validar las entradas del usuario y asegúrate de manejar adecuadamente las excepciones que puedan surgir durante la validación.

Objetivo

El objetivo de esta actividad es desarrollar un programa para gestionar una empresa agroalimentaria que permita a los usuarios ingresar información sobre los productos, como el nombre, la cantidad, el precio y la fecha de vencimiento. Utilizarás la clase InputValidator para validar las entradas del usuario y asegurarte de manejar adecuadamente las excepciones que puedan surgir durante la validación.

Descripción del Problema

Eres un desarrollador de software encargado de crear un programa para gestionar una empresa agroalimentaria. El programa debe permitir a los usuarios ingresar información sobre los productos que la empresa ofrece, incluyendo el nombre del producto, la cantidad disponible, el precio por unidad y la fecha de vencimiento. Para garantizar que las entradas del usuario sean válidas, utilizarás la clase InputValidator que has desarrollado en actividades anteriores. El programa debe validar las entradas del usuario utilizando la clase InputValidator antes de almacenar la información en una estructura de datos adecuada, como una lista o un diccionario. Además, el programa debe manejar adecuadamente las excepciones que puedan surgir durante la validación de entradas, mostrando mensajes de error claros y específicos utilizando los mensajes definidos en el Enum Messages que creaste en la actividad anterior.

Requisitos

  • La empresa trabaja con tres tipos de productos: productos frescos, productos refrigerados y productos congelados.
  • Todos los productos llevan esta información común: nombre del producto, la cantidad en existencia, el precio por unidad, fecha de caducidad y número de lote.
  • Los productos frescos llevan esta información adicional: fecha de envasado y país de origen.
  • Los productos refrigerados llevan esta información adicional: fecha de envasado, país de origen, temperatura de conservación y código de supervisión sanitaria.
  • Existen tres tipos de productos congelados: productos congelados por aire, productos congelados por agua y productos congelados por nitrógeno. Todos los productos congelados llevan esta información adicional: fecha de envasado, país de origen y temperatura de conservación. Además, cada tipo de producto congelado lleva información adicional específica:
    • Productos congelados por aire: % de nitrógeno, % de oxígeno, % de dióxido de carbono y % de vapor de agua en el envase.
    • Productos congelados por agua: salinidad en gramos por litro de agua en el envase.
    • Productos congelados por nitrógeno: método de congelación utilizado (congelación rápida o congelación lenta) y el tiempo de exposición al nitrógeno en segundos.
  • Maneja la interacción del usuario con un menú que permita seleccionar las diferentes opciones para gestionar la información de los productos, como agregar un nuevo producto, mostrar la lista de productos, buscar productos por nombre y eliminar productos. Utiliza la clase InputValidator para validar las entradas del usuario en este proceso.

Instrucciones

  1. Crea una clase Product que contenga atributos comunes a todos los productos, como el nombre del producto, la cantidad, el precio por unidad, la fecha de vencimiento, etc. Luego, crea clases derivadas para cada tipo de producto que hereden de la clase Product y agreguen los atributos específicos para cada tipo de producto.
    • Recuerda que cada clase debe tener un constructor que inicialice los atributos y métodos para mostrar la información del producto.
    • Toma en cuenta que la lista de tipo de productos solo es una guía, puedes agregar más clases si lo necesitas, siempre y cuando sigas la estructura de herencia y agregues los atributos específicos para cada tipo de producto.
  2. Crea una clase ProductManager que contenga métodos para agregar productos, mostrar la lista de productos, buscar productos por nombre y eliminar productos. Utiliza un array de 50 productos para almacenar la información de los productos en la empresa agroalimentaria.
  3. Utiliza la clase InputValidator para validar las entradas del usuario antes de agregar un producto a la lista de productos. Asegúrate de que las entradas sean válidas, como que la cantidad sea un número entero positivo, el precio por unidad sea un número decimal positivo, y la fecha de vencimiento sea una fecha válida en el formato correcto.
  4. Maneja adecuadamente las excepciones que puedan surgir durante la validación de entradas, mostrando mensajes de error claros y específicos utilizando los mensajes definidos en el Enum Messages que creaste en la actividad anterior.
  5. Crea una clase con el método main que permita a los usuarios interactuar con el programa, permitiéndoles agregar productos, mostrar la lista de productos, buscar productos por nombre y eliminar productos. Utiliza la clase InputValidator para validar las entradas del usuario en este proceso.
  6. Agrega comentarios en el código para explicar la funcionalidad de cada parte y cómo se utiliza la clase InputValidator para validar las entradas del usuario en el contexto de la gestión de una empresa agroalimentaria.
  7. Compila y ejecuta tu programa para asegurarte de que todas las funcionalidades funcionen correctamente. Toma capturas de pantalla de la ejecución del programa mostrando el uso de las funciones para agregar productos, mostrar la lista de productos, buscar productos por nombre y eliminar productos, así como los mensajes de error personalizados cuando se ingresan entradas no válidas.
  8. Para efectos de evaluación, crea una presentación en donde expliquen el proceso de desarrollo del programa, las decisiones de diseño que tomaron, cómo utilizaron la clase InputValidator para validar las entradas del usuario y cómo manejaron las excepciones. Así mismo durante la presentación, muestren la ejecución del programa y expliquen cómo se utilizan las diferentes funciones para gestionar la empresa agroalimentaria.

Entrega

Para la entrega deberás incluir el código fuente completo y debidamente comentado, así como un unico documento PDF que contenga los siguientes elementos:

  • Portada con el título de la actividad, la lista de integrantes del equipo y el nombre del curso.
  • Código fuente completo de la clase Product, las clases derivadas para cada tipo de producto, la clase ProductManager y la clase con el método main.
  • Capturas de pantalla de la ejecución del programa mostrando el uso de las funciones para agregar productos, mostrar la lista de productos, buscar productos por nombre y eliminar productos, así como los mensajes de error personalizados cuando se ingresan entradas no válidas.
  • Una breve explicación de cómo se utiliza la clase InputValidator para validar las entradas del usuario en el contexto de la gestión de una empresa agroalimentaria y cómo se organizan las clases para cada tipo de producto utilizando herencia. Además, incluye una explicación de cómo se manejan las excepciones durante la validación de entradas y cómo se utilizan los mensajes definidos en el Enum Messages para mostrar mensajes de error claros y específicos.

Evaluación

La evaluación de esta actividad se basará en los siguientes criterios:

CriterioPuntos
Implementación de la clase Product y las clases derivadas para cada tipo de producto utilizando herencia20%
Implementación de la clase ProductManager con métodos para agregar productos, mostrar la lista de productos, buscar productos por nombre y eliminar productos20%
Uso adecuado de la clase InputValidator para validar las entradas del usuario antes de agregar un producto a la lista de productos20%
Manejo adecuado de las excepciones durante la validación de entradas, mostrando mensajes de error claros y específicos utilizando los mensajes definidos en el Enum Messages20%
Calidad del código, incluyendo la organización, la legibilidad y los comentarios explicativos10%
Calidad de la presentación, incluyendo la explicación del proceso de desarrollo del programa, las decisiones de diseño, el uso de la clase InputValidator y el manejo de excepciones, así como la demostración de la ejecución del programa10%

Toma en consideración que la evaluación se basará en la calidad y funcionalidad del programa, así como en la claridad de la presentación. Por ende es importante que todos los integrantes del equipo participen activamente en el desarrollo del programa y en la defensa del mismo durante la presentación. Además, se valorará la creatividad y la originalidad en el diseño del programa, siempre y cuando se cumplan los requisitos establecidos en las instrucciones.

Por último, es indispensable la presentación del programa para la evaluación, por lo que se recomienda practicar la presentación con anticipación para asegurarse de que todos los integrantes del equipo estén familiarizados con el programa y puedan explicar claramente su funcionamiento durante la presentación, ya que la ausencia del equipo o parte de este durante la presentación resultará en una calificación de cero (0) para esta actividad, sin importar la calidad del programa y la documentación entregada, para los integrantes que no asistan a la presentación.

Copyright Jesús Aurelio Castro Magaña © 2026