Está en la página 1de 17

• Nombre Diego Segarra

• Paralelo 100-RED-PROGRAMACION ORIENTADA A OBJET

En contacto con el docente (ACD) ( )


Componentes del aprendizaje: Práctico-experimental (APE) ( X )
Autónomo (AA) ( )

Analizar y aplicar la POO con estructura de


Actividad de aprendizaje:
repetición

Tipo de recurso: Resolución de problemas y casos 2.

Unidad 1. Introducción a POO

• El Paradigma de POO
• Objetos y Clases
• Uso Métodos y
Encapsulación
• Diagramas de Clases en POO
• Uso de la Arquitectura modelo-
vista-controlador

Unidad 2. Estructura y Creación de


Algoritmos Orientados a Objetos
Tema de la unidad:
• Creación de Mini especificaciones
Orientados a Objetos
• Uso de Constructores
• Uso de estructuras de selección
simple y compuesta en POO

Unidad 3. Estructuras de Repetición en POO

• Uso de Estructura de repetición do-


while en POO
• Uso de Estructura de repetición
while en POO
• Uso de Estructura de repetición for
en POO
• Diseña, implementa, prueba y
depura programas sencillos en un
lenguaje de programación orientado
a objetos.
• Describe cómo el mecanismo de la
Resultados de aprendizaje que se clase soporta la encapsulación y la
espera lograr: ocultación de la información.
• Describe la relación entre la
estructura estática de la clase y la
estructura dinámica de las
instancias de la clase.

Actividades previas:

• Realizar la autoevaluación de la
unidad 1, 2, 3.
• Realizar el cuestionario de refuerzo
1, 2, 3, 4 - Bimestre 1.
• Luego de elaborar el diagnóstico de
las temáticas, procure plantearse
ejercicios y resolverlos por sí solo.
• Analice la problemática planteada
en la pregunta y resolver aplicando
los conceptos estudiados y
practicados.

Actividades por realizar:


Estrategias didácticas:
Luego, en base al planteamiento de
la problemática, el estudiante debe realizar las
siguientes tareas/entregables:

1. Diagrama de clases: El diagrama de


clases debe ser desarrollado en el
programa Día-UML (o similares) y
copiado a un único informe .DOCX.
2. Mini especificación: Las
implementaciones de la mini
especificación debe ser realizada en
mismo informe, entregable (1). No
debe ser el mismo código Java o
similar. Su libro base ilustra muchos
ejemplos.
3. Implementación en un lenguaje de
programación:
Para la implementación de la solución en
lenguaje de programación Java, usted debe
realizar el laboratorio virtual 2 planteado para
el primer bimestre. Revise las directrices de
uso del laboratorio en su EVA.
La solución generada debe evidenciar que se
realizó en base a un proceso analítico,
tomando como referencia las temáticas
estudiadas en el primer bimestre. Este
laboratorio virtual le permite generar un PDF
con todo lo desarrollado.
Problemática de resolución de problemas y
casos 2:
Una importante internacional desea
implementar en las ciudades más importantes
del país un aplicativo para movilidad vehicular
tipo inDriver; es por lo que se le contrata
como analista de sistemas para que construya
un demo de dicha solución, dados estos
requerimientos (Ud. puede aplicar otros
adicionales si lo considera pertinente):

• Al instalarse la aplicación, se debe


registrar al usuario con sus datos
básicos, adicional sus datos
bancarios o de tarjeta
(debito/crédito) por si se desea
hacer los pagos mediante operación
bancaria online.
• Cuando el usuario solicita un
servicio de movilidad, debe ingresar
su ubicación actual, una referencia
adicional y su oferta de pago por el
servicio. Al publicar su solicitud, se
le mostraran N vehículos (taxi, auto,
moto) más cercanas.
• El conductor puede en la misma
app, ver todos los clientes que
hicieron un pedido, hacer una
contra oferta y/o ir a recoger al
cliente. Solo el cliente es quien
confirma o anula la solicitud del
servicio.
• Una vez finalizado el servicio, el
cliente cancela al conductor en
efectivo, o transferencia bancaria, o
con tarjeta. Al final emite una
calificación y/o comentario al
conductor por el servicio prestado.

El objetivo es desarrollar una solución demo


sobre consola, con la(s) clase(s) que considere
necesarias, en el escenario de un solo cliente y
conductor. La clase de prueba es quien
verifica dicho escenario; realizar todos los
ingresos y salidas desde/hacia consola dentro
de la clase prueba, y no en la(s) clase(s) base.
Los datos deben quemarse en el main() y/o
autogenerarse.
Muestre como resultados, los datos que Ud.
considere pertinentes en el caso de no haber
usado este tipo de aplicaciones, si es que si,
apéguese a todos los datos, o los que
considere pertinentes para comprender el
demo.
Entregables a subir en la plataforma:
En un único PDF adjuntar el (1) Diagrama de
clases UML, la (2) Mini especificación y
el (3) PDF generado desde el laboratorio
virtual.
Importante:

• Revise el instrumento de
evaluación: “Rúbrica Anexo2”, y
considere oportunamente para el
desarrollo de esta actividad cada
uno de los apartados que se
califican, y en base a los cuales su
docente retroalimenta
posteriormente.
• Su solución debe ser original, ya
que el trabajo no es grupal, sino,
individual. En el caso de detectar el
mínimo rastro de plagio (ya sea de
páginas web, videos,
tutores/maestros, compañeros,
familiares, entre otros.), su trabajo
será anulado adjuntando la
evidencia del plagio, ante la cual
usted no podrá refutar el dictamen
del docente, respaldado en el
CÓDIGO DE ÉTICA
INSTITUCIONAL DE LA UTPL
vigente, TITULO VII, Obligaciones
éticas de los estudiantes, Art.20.
inciso 6, que reza así: “Evitar y
denunciar todo tipo de prácticas de
falta de honradez académica, como
plagio de trabajos, copia de
exámenes, compraventa de
evaluaciones, falsificación de
documentos o calificaciones, entre
otros.”
• Si en el transcurso del desarrollo de
esta actividad tuviera
inconvenientes, con todo gusto se
le atiende por los medios
compartidos (foros, chat, correos,
etc.) en la plataforma virtual de
aprendizaje.

[APEB1-15%] Actividad experimental 2: Analizar y aplicar la POO con estructura de


repetición
PROBLEMATICAS Y RESOLUCION DE PROBLEMAS 2:
Mientras se ejercita, puede usar un monitor de frecuencia cardiaca para ver que su corazón
permanezca dentro de un rango seguro sugerido por sus entrenadores y doctores. De acuerdo
con la Asociación Estadounidense del Corazón (AHA) (vwwv.americanheart.org), la fórmula
para calcular su frecuencia cardiaca máxima en pulsos por minuto es de 220 menos su edad en
años. Su frecuencia cardiaca esperada es un rango que está entre el 50 y el 85% de su frecuencia
cardiaca máxima.
[Nota: estas fórmulas son estimaciones proporcionadas por la AHA. Las frecuencias cardiacas
máxima y esperada pueden variar de acuerdo con la salud, condición física y sexo del
individuo. Siempre debe consultar un médico o a un profesional de la salud antes de empezar
o modificar un programa de ejercicios.]
Cree una clase llamada FrecuenciasCardiacas. Los atributos de la clase deben incluir el primer
nombre de la persona, su apellido y fecha de nacimiento (la cual debe consistir de atributos
separados para el mes, día y año de nacimiento). Su clase debe tener un constructor que reciba
estos datos como parámetros. Para cada atributo debe proveer métodos establecer y obtener.
La clase también debe incluir un método que calcule y devuelva la edad de la persona (en años),
uno que calcule y devuelva la frecuencia cardiaca máxima de esa persona, y otro que calcule y
devuelva la Secuencia cardiaca esperada de la persona. Escriba una aplicación de Java que pida
la información de la persona, cree una instancia de un objeto de la clase FrecuenciasCardiacas
e imprima la información a partir de ese objeto (incluya el primer nombre de la persona, su
apellido y fecha de nacimiento), y que después calcule e imprima la edad de la persona en
(años), Secuencia cardiaca máxima y rango de frecuencia cardiaca esperada. Finalmente, su
aplicación debe tener la posibilidad de presentar un historial de seguimiento de estos signos
vitales según periodos de ejercicio realizado (tiempo) y un indicador adicional que el estudiante
elija como relevante en el monitoreo; todo esto se debe presentar en una tabla estadística.
DIAGRAMA DE CLASES

MINIESPECIFICACION

Algoritmo FrecuencasCardiacas
Clase FrecuencasCardiacas
1. Declarar datos
pNombre, pApellido, condición: String
Dian, mesn, añon, pulsaciones: int

2. Método establecerpNombre(pNombre: String)


a. pNombre = pNombre
b. Fin Método establecerpNombre

3. Método obtenerpNombre()
a. return=pNombre
b. Fin Método obtenerpNombre

4. Método establecerpApellido(pApellido: String)


a. pApellido = pApellido
b. Fin Método establecerpApellido

5. Método obtenerpApellido()
a. return=pApellido
b. Fin Método obtenerpApellido

6. Método establecerpdian(dian: int)


a. dian = dian
b. Fin Método establecerpdian

7. Método obtenerpdian()
a. return=dian
b. Fin Método obtenerpdian

8. Método establecerpmesn(mesn: int)


a. mesn = mesn
b. Fin Método establecermesn

9. Método obtenerpmesn()
a. return=mesn
b. Fin Método obtenerpmesn

10. Método establecerañon (añon: int)


a. añon = añon
b. Fin Método establecerañon

11. Método obtenerañon ()


a. return=añon
b. Fin Método obtenerañon

12. Método establecerpulsaciones (pulsaciones: int)


a. pulsaciones = pulsaciones
b. Fin Método establecerpulsaciones
13. Método obtenerpulsaciones ()
a. return=pulsaciones
b. Fin Método obtenerpulsaciones

14. Método establecercondicion(condicion: String)


a. condicion = condicion
b. Fin Método establecercondicion

15. Método obtenercondicion ()


a. return=condicion
b. Fin Método obtenercondicion

16. Método edadP()


LocalDate ahora = año o, mes, día
Period periodo = fecha nacimiento, ahora
Imprimir; edad, años
Fin Método edadP ()

17. Método frecMaxPersona()


LocalDate ahora = año, mes, día
Period periodo = fecha nacimiento, ahora
Imprimir Secuencia cardiaca máxima = 220 –periodo. Años
Fin Método frecMaxPersona ()

18. Método frecEspPersona ()


LocalDate ahora = año, mes, día
Period periodo = fecha nacimiento, ahora
Imprimir = Rango de frecuencia esperada (220 – periodo. Años * 0,5) (220 – periodo. Años
*0,5.
Fin Clase FrecuenciasCardiacas
ClasePruebaFrecuenciasCardiacas
1. Método principal ()

a. Declarar variables
pNombre: String
pApellido: String
condicion: String
dian: int
mesn: int
añon: int
Pulsaciones: int

b. do
1. Declarar, crear e iniciar objeto
FrecuenciasCardiacas objfrecc = new FrecuenciasCardiacas()
2. Solicitar nombre, apellido, fecha de nacimiento (día, mes, año), pulsaciones
3. Leer pNombre, pApellido, condicion, dian, mesn, añon, pulsaciones
4. Establecer
objfrecc.establecerpNombre(pNombre);
objfrecc.establecerpApellido(pApellido);
objfrecc.establecerdian(dian);
objfrecc.establecermesn(mesn);
objfrecc.establecerañon(añon);
objfrecc.establecerpulsaciones(pulsaciones);
5. Calcular:
frecc.edadP();
frecc.frecMaxPersona();
frecc.frecEspPersona();

6. Imprimir objfrecc.obtenerpNombre ()
objfrecc.obtenerpApellido ()
objfrecc.obtenerdian ()
objfrecc.obtenermesn ()
objfrecc.obteneraañon ()
objfrecc.edadP ()
objfrecc.MaxPersona ()
objfrecc.EspPersona ()
7. Preguntar “¿Desea ingresar más datos(S/N)?”
8. Leer condicion
c. while condicion == ‘S’
d. Fin Método principal
Fin Clase PruebaFrecuenciasCardiacas
Fin

CODIGO JAVA
package pruebafrecuenciascardiacas;
import java.time.LocalDate;
import java.time.Period;
public class FrecuenciasCardiacas {

public String pNombre;


public String pApellido;
public int dian;
public int mesn;
public int añon;
public int pulsaciones;
public String condicion = "";
public FrecuenciasCardiacas (){}
public FrecuenciasCardiacas(String pNombre, String pApellido, int dian, int mesn, int añon,
int pulsaciones, String condicion){
this.pNombre = pNombre;
this.pApellido = pApellido;
this.dian = dian;
this.mesn = mesn;
this.añon = añon;
this.pulsaciones= pulsaciones;
this.condicion = condicion;
}

public String obtenerpNombre() {


return pNombre;
}

public void establecerpNombre(String pNombre) {


this.pNombre = pNombre;
}

public String obtenerpApellido() {


return pApellido;
}

public void establecerpApellido(String pApellido) {


this.pApellido = pApellido;
}

public int obtenerdian() {


return dian;
}
public void establecerdian(int dian) {
this.dian = dian;
}

public int obtenermesn() {


return mesn;
}

public void establecermesn(int mesn) {


this.mesn = mesn;
}

public int obtenerañon() {


return añon;
}

public void establecerañon(int añon) {


this.añon = añon;
}

public int obtenerpulsaciones() {


return pulsaciones;
}

public void establecerpulsaciones(int pulsaciones) {


this.pulsaciones = pulsaciones;
}

public String obtenercondicion() {


return condicion;
}

public void establecercondicion(String condicion) {


this.condicion = condicion;
}

public void edadP(){


LocalDate fechaNac = LocalDate.of(añon, mesn, dian);
LocalDate ahora = LocalDate.now();

Period periodo = Period.between(fechaNac, ahora);


System.out.printf("%nEdad: %d años", periodo.getYears());
}

public void frecMaxPersona(){

//la fórmula para calcular la frecuencia cardiaca máxima en pulsos por minuto
//es 220 menos su edad en anos.

LocalDate fechaNac = LocalDate.of(añon, mesn, dian);


LocalDate ahora = LocalDate.now();
Period periodo = Period.between(fechaNac, ahora);

System.out.printf("%nSecuencia cardiaca maxima (SCM): %d", 220 -


periodo.getYears());
}
public void frecEspPersona(){

//La frecuencia cardiaca esperada tiene un rango que está entre el 50 y el 85%
de la
//frecuencia a cardiaca máxima.

LocalDate fechaNac = LocalDate.of(añon, mesn, dian);


LocalDate ahora = LocalDate.now();
Period periodo = Period.between(fechaNac, ahora);

System.out.printf("%nRango de frecuencia Esperada (RFC): entre %.0f y


%.0f",

(220 - periodo.getYears())*0.5,
(220 - periodo.getYears())*0.85);

}
}

package pruebafrecuenciascardiacas;

import java.util.Scanner;

public class PruebaFrecuenciasCardiacas {


public static void main(String[] args) {

String pNombre;
String pApellido;
int dian;
int mesn;
int añon;
int pulsaciones;
Scanner tcl = new Scanner(System.in);
String condicion;

do{
FrecuenciasCardiacas frecc = new FrecuenciasCardiacas();
System.out.println("\n\nIngrese los datos de Persona ");
System.out.print("Nombre: ");
pNombre = tcl.nextLine();
System.out.print("Apellido: ");
pApellido = tcl.nextLine();
System.out.println("Fecha de Nacimiento (DD/MM/YYYY)");
System.out.print("Dia: ");
dian = tcl.nextInt();
System.out.print("Mes: ");
mesn = tcl.nextInt();
System.out.print("Año: ");
añon = tcl.nextInt();
System.out.print("Pulsaciones por minuto: ");
pulsaciones =tcl.nextInt();

frecc.establecerpNombre(pNombre);
frecc.establecerpApellido(pApellido);
frecc.establecerdian(dian);
frecc.establecermesn(mesn);
frecc.establecerañon(añon);
frecc.establecerpulsaciones(pulsaciones);

System.out.println("\nRESULTADOS:");
System.out.printf("\nNombre: %s %s", frecc.obtenerpNombre(),
frecc.obtenerpApellido());
System.out.printf("\nFecha de Nacimiento:%s %s %s",+frecc.obtenerdian(),+
frecc.obtenermesn(),+ frecc.obtenerañon());
frecc.edadP();
frecc.frecMaxPersona();
frecc.frecEspPersona();
System.out.println("\n Desea ingresar mas datos? (s/n):");
condicion = tcl.nextLine();

} while (condicion == "s");


System.out.println("\nHa finalizado el programa");

También podría gustarte