PIU2
PIU2
PROYECTO INTEGRADOR 2
NOMBRES:
Gonzalez Benitez G.
Hernandez Collado Dibanhi Michelle
Hernandez Palafox Genesis Isabel
Vargas Gutierrez Maria Yeleni
2
Tabla de contenido
Introducción: ..................................................................................................................................... 3
Planteamiento del proyecto: ............................................................................................................. 4
Solución: ............................................................................................................................................. 4
Elaboración del programa: .............................................................................................................. 5
Clase principal ................................................................................................................................. 5
Servicio del IMC ............................................................................................................................. 9
Consumo de Agua ......................................................................................................................... 11
Servicio de ingesta calórica ........................................................................................................... 12
Código completo en texto: .............................................................................................................. 14
Código completo en Imagen: .......................................................................................................... 21
Resultados: ....................................................................................................................................... 26
Conclusión: ...................................................................................................................................... 28
3
Introducción:
Para iniciar, los componentes son unidades de código reutilizables que encapsulan una
funcionalidad específica dentro de una aplicación. Permiten dividir aplicaciones complejas
en partes más manejables, facilitando la mantenibilidad y la escalabilidad del código.En
Java, los componentes son partes modulares y reutilizables de una aplicación que
encapsulan una funcionalidad específica. Estos pueden incluir clases, interfaces, y paquetes
que se pueden combinar para construir aplicaciones más complejas. Mientras que las
librerías son colecciones de código preescrito que proporcionan soluciones para tareas
comunes, evitando la necesidad de escribir código desde cero. Incluyen desde funciones
matemáticas hasta herramientas para la manipulación de datos. Las librerías en Java son
colecciones de clases y métodos preescritos que los desarrolladores pueden usar para
realizar tareas comunes, evitando así la necesidad de escribir código desde cero.
Ejemplo:
• Java Standard Library: Incluye paquetes como java.util para estructuras de datos,
java.io para entrada/salida, y java.net para redes.
Una de sus ventajas principales es que permiten ahorrar tiempo, aprovechar soluciones
optimizadas y probadas, y centrarse en la lógica específica de la aplicación.
En resumen, en el desarrollo avanzado en Java, el uso efectivo de componentes y librerías
es fundamental para crear aplicaciones eficientes y mantenibles, permitiendo a los
desarrolladores abordar problemas complejos de manera más estructurada y eficiente.
4
Solución:
Realizar un programa tomando en cuenta el ámbito de salud para el beneficio de todas las personas
en donde se les mostrara por medio de un menú, su índice de masa corporal, así como también
consejos para su consumo de agua e ingesta de calorías.
5
4. Para seguir, iniciaremos con los constructores en donde la creación de instancias inicia en
“ServicioDeIMC”, “ConsumoDeAgua” y “ServicioIngestaCalorica”.
5. Para la configuración de las ventanas estaremos ocupando las líneas de código que
estuvimos viendo en clases y son las siguientes:
• setTitle("Programa Principal"): Establece el título de la ventana.
• setSize(300, 250): Define el tamaño de la ventana.
• setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE): Configura la operación de
cierre para salir del programa.
• setLocationRelativeTo(null): Centra la ventana en la pantalla.
6. Para la configuración del panel seguimos los pasos que se muestran a continuación:
• Crear un JPanel y establece su diseño a null para posicionar los componentes de
forma absoluta.
• Añadir la etiqueta opcionesLabel y establece su posición y tamaño.
• Añadir y configura cada botón, asignando posiciones y añadiendo ActionListener
para manejar eventos de clic.
• Añadir el Panel a la Ventana: Añade el panel a la ventana y hace visible la ventana.
7
• Para identificar el Botón Presionado: Usa e.getSource() para determinar qué botón
fue presionado.
Después para la invocación del Método Correspondiente:
• calcularIMC(): Método para calcular el IMC.
• calcularConsumoAgua(): Método para calcular el consumo de agua.
• registrarIngestaCalorica(): Método para registrar la ingesta calórica.
• System.exit(0): Sale del programa cuando se presiona el botón "Salir".
8. El siguiente método que se creo fue calcularIMC, en donde se solicita los datos
correspondientes, Usa servicioIMC.calcularIMC(peso, altura) para calcular el IMC, Usa
servicioIMC.clasificarIMC(imc), servicioIMC.obtenerRecomendacion(imc) y
servicioIMC.evaluarRiesgoSalud(imc) para obtener la clasificación, recomendación y
riesgo de salud basados en el IMC y por último Construye un mensaje con los resultados y
lo muestra en un cuadro de diálogo.
8
10. El tercer método es registrarIngestaCalorica, en este método, de igual manera solicita los
datos al usuario como lo son la cantidad de alimentos consumidos y las calorías de cada
9
alimento.
• Utiliza el método calcularCaloriasTotales de servicioIngestaCalorica para calcular
el total de calorías consumidas.
• Utiliza los datos de usuario para estimar las calorías recomendadas mediante el
método estimarCaloriasRecomendadas.
• Calcula el porcentaje de la ingesta calórica recomendada consumida con
calcularPorcentajeIngestaRecomendada.
• Utiliza obtenerRecomendacionIngestaCalorica para obtener una recomendación
basada en el porcentaje de ingesta.
• Por último, muestra un mensaje con las calorías recomendadas, el porcentaje de
ingesta y la recomendación en un cuadro de diálogo.
11. Para finalizar esta parte, se crea una instancia de ProPri, iniciando así la aplicación.
3. El siguiente es el método que clasifica el IMC en diferentes categorías según los rangos
establecidos por la Organización Mundial de la Salud (OMS). Toma el IMC como
parámetro y devuelve una cadena que representa la clasificación del IMC, que puede ser
"Bajo peso", "Normal", "Sobrepeso" o "Obesidad".
10
Consumo de Agua
1. De igual manera que el anterior, iniciaremos con el constructor por defecto, es decir el que
no realiza ninguna operación especial al ser invocado.
Estos son los pasos para entender la clase ConsumoDeAgua y sus funciones. Cada método
cumple un propósito específico en el contexto de la gestión del consumo de agua y la
hidratación adecuada.
individuo. Calcula la TMB según la fórmula correspondiente al sexo del individuo y luego
ajusta este valor según el nivel de actividad.
Cada método cumple una función específica relacionada con la gestión de la ingesta
calórica y proporciona herramientas útiles para la evaluación y recomendación nutricional.
14
public ProPri() {
servicioIMC = new ServicioDeIMC();
servicioConsumoAgua = new ConsumoDeAgua();
servicioIngestaCalorica = new ServicioIngestaCalorica();
setTitle("Programa Principal");
setSize(300, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
add(panel);
setVisible(true);
}
JOptionPane.showMessageDialog(this, mensaje.toString());
}
JOptionPane.showMessageDialog(this, mensaje.toString());
}
int totalCaloriasConsumidas =
servicioIngestaCalorica.calcularCaloriasTotales(caloriasConsumidas);
JOptionPane.showMessageDialog(this, "Total de calorías consumidas: " +
totalCaloriasConsumidas);
Consumo de Agua
package consumodeagua;
public ConsumoDeAgua() {
}
public ServicioIngestaCalorica() {
}
public int estimarCaloriasRecomendadas(int edad, String sexo, double peso, double altura, String
20
nivelActividad) {
double tmb;
if (sexo.equalsIgnoreCase("masculino")) {
tmb = 88.36 + (13.4 * peso) + (4.8 * altura * 100) - (5.7 * edad);
} else {
tmb = 447.6 + (9.2 * peso) + (3.1 * altura * 100) - (4.3 * edad);
}
switch (nivelActividad.toLowerCase()) {
case "bajo":
return (int) (tmb * 1.2);
case "medio":
return (int) (tmb * 1.375);
case "alto":
return (int) (tmb * 1.55);
default:
return (int) tmb;
}
}
Resultados:
27
28
Conclusión:
En conclusión, en este proyecto se desarrolló un programa en Java utilizando tres librerías
distintas y una clase principal muestra claramente los beneficios de la programación
modular. El programa aborda tres áreas: cálculo del Índice de Masa Corporal (IMC),
seguimiento del consumo de agua, y gestión de la ingesta de calorías. Cada librería contiene
al menos cuatro métodos distintos, además del constructor.
La eficiencia en el desarrollo se incrementa significativamente al reutilizar código
existente, lo que acelera el proceso de desarrollo. La clase principal del programa coordina
la interacción entre las diferentes librerías, captura datos del usuario y presenta los
resultados de manera integrada, proporcionando una interfaz clara y coherente para el
usuario. En términos de implementación, cada librería ofrece métodos especializados que
permiten una gestión eficaz de sus respectivas áreas. Por otro lado, En términos de
implementación, la clase principal puede invocar métodos de las librerías de manera
ordenada, gestionando la entrada y salida de datos y asegurando que cada librería opere de
manera autónoma pero coordinada.
En resumen, la utilización de componentes y librerías modulares en el desarrollo de este
programa en Java demuestra cómo esta estrategia puede mejorar considerablemente la
mantenibilidad, escalabilidad y eficiencia del software. Al encapsular funcionalidades
específicas en librerías independientes, se logra un desarrollo más estructurado y ordenado,
lo que facilita la incorporación de nuevas características y ofrece una base sólida para
futuras mejoras y expansiones del programa. Este enfoque modular no solo optimiza el
proceso de desarrollo, sino que también garantiza que el software resultante sea robusto,
fácil de mantener y adaptable a las necesidades cambiantes de los usuarios.