Programación Orientada a Objetos Problema: Cálculo de la frecuencia cardíaca máxima al hacer ejercicio Recordando…. Frecuencia Cardíaca Máxima Teórica que surge de la resta: 220 – edad (hombres) 226 – edad (mujeres) class Persona { private: string nombre; string apellidos; int annoNacimiento; char sexo; Necesitamos una estructura que nos permita identificar el sexo del objeto Estructuras selectivas Es aquella en la que se evalúa una condición y en función del resultado se realiza una operación. Se utilizan para tomar decisiones lógicas, y se suelen denominar estructuras de decisión o alternativas. Las condiciones se especifican usando expresiones lógicas. Estas estructuras pueden ser: • simples • dobles • múltiples Estructuras de control Alternativa simple Alternativa doble if (<condición>) <bloque de instrucciones1>; if (<condición>) <bloque de instrucciones 1>; else <bloque de instrucciones 2>; condición si Acción 1 no Acción 2 condición si Acción 1 Problema: Cálculo de la frecuencia cardíaca máxima al hacer ejercicio class Persona { private: string nombre; string apellidos; int annoNacimiento; char sexo; ….. float calculoFrecMax() { if (sexo == ‘F’) return (226 – edad()); else return (220 – edad()); } En el main Persona P1; ……. cout<<"La frecuencia máxima es: "<<P1.calculoFrecMax()<<endl; Expresiones y operadores lógicos Tabla de verdad lógica A B A OR B A AND B NOT A V V V V F V F V F F V V F F F F F LOGICOS ! NOT && AND || OR V RELACIONALES == igual != distinto > mayor que < menor que >= mayor o igual que <= menor o igual que Ejemplo: class Persona { private: string nombre; string apellidos; int annoNacimiento; char sexo; ….. En la clase Persona escriba un método que retorne true si la persona es una mujer menor de edad bool esMujerMenor () { if (edad() < 18 && sexo == ‘F’) return true; else return false; } En el main Persona P1; ……. if (P1.esMujerMenor()) cout<<P1.getNombre()<<" es mujer menor de edad "<<endl; Ejemplo Persona Diseñe un método que determine en qué estado de la vida se encuentra una persona: niño (0 -12 años), joven (13-21), adulto (22 – 59) o adulto mayor (más de 60 años) Estructuras anidadas Alternativa anidada: las estructuras de decisión simples, dobles y hasta múltiples pueden combinarse dentro de ellas para formar estructuras de selección más complejas y de esta forma tener distintas posibilidades de acción. Estas estructuras pueden volverse tan complejas que se recomienda siempre utilizar la sangría para claridad del código Estructuras anidadas class Persona { private: string nombre; string apellidos; int annoNacimiento; char sexo; ….. string estadoVida () { if (edad() <= 12) return "niño" ; else if (edad() <= 21) return "joven" ; else if (edad() <= 60) return "adulto" ; else return "adulto mayor "; } En el main Persona P1; ……. cout<<P1.getNombre()<<" es un(a) "<< P1.estadoVida()<<endl; Ejemplo: clase Fecha class Fecha { private: int dia; int mes; int anyo; ….. Suponga que tiene una clase Fecha definida de la siguiente manera: class Fecha { private: int dia; int mes; int anyo; … } Se quiere un método que imprima la fecha de la forma “22 de junio de 1983”. del mes Es necesario un método que sea capaz de devolver el nombre Alternativa múltiples switch (expresión) { case valor 1: instrucción1; break; case valor 2: instrucción2; break; …… case valor n: instrucción n; break; <default: bloque de instrucciones default [break]] > // es opcional } Gráficamente condiciön Acción 1 Acción 2 Acción n Ejemplo: clase Fecha class Fecha { private: int dia; int mes; int anyo; ….. string mesAnyo() { switch (mes) { case 1: return "enero"; case 2: return "febrero"; case 3: return "marzo"; ……… case 12: return "diciembre"; default: return "mes invalido"; break; } } void imprimeFecha (){ cout << dia<< "de "<<mesAnyo() << "de " << anyo << endl;} Ejemplo: clase Persona class Fecha { private: int dia; int mes; int anyo; ….. Suponga tiene dos objetos P1 y P2 creados. En el main, determine e imprima cuál persona es más joven. //Se determina e imprime cual persona es más joven if (P1.edad() == P2.edad()) cout << P1.getNombre()<<"tiene la misma edad que "<< P2.getNombre(); else if (P1.edad() < P2.edad()) cout << P1.getNombre()<< " es el/la menor de ambos"<<endl; else cout << P2.getNombre()<< " es el/la menor de ambos"<<endl; …….. Tarea (entregar próxima clase) Se tiene la siguiente clase Vehículo con la siguiente estructura: Clase Vehiculo -int placa; -string modelo; -int annio; -float precio; +Vehiculo(); +Vehiculo(int,string,int, float); + ~Vehiculo(); + Métodos set y get de cada atributo + determinaRestriccion() + calculoMarchamo() (10 pts) Implemente la clase, específicamente los métodos constructores con y sin parámetros, los métodos set y get y el destructor. Tarea (entregar próxima clase) (15 pts) Escriba un método llamado determinaRestriccion() que permita devolver el día de la semana que tiene restricción vehicular. A continuación, se muestra un cuadro con el último dígito de la placa y el día correspondiente: Último dígito 1,2 3,4 5,6 7,8 9,0 Día correspondiente Lunes Martes Miércoles Jueves Viernes Por ejemplo si la placa del vehículo termina en 6, el día que le corresponde restricción es el día miércoles. Este método debe ser implementado únicamente haciendo uso de la estructura switch. Tarea (entregar próxima clase) (Valor 15 pts) Escriba un método calculoMarchamo() que determine y retorne el costo del pago del marchamo que debe pagar el vehículo. El cálculo del marchamo esta dado de la siguiente manera: si el vehículo es del año actual debe pagar un 1% del valor del vehículo, si tiene 10 años de antigüedad debe pagar un 5% y si tiene más de 10 años debe pagar un 2% del valor del vehículo. (Valor : 15 pts) En el main: (2 pts). Cree un objeto A tipo vehículo con el constructor con parámetros. (2 pts). Llame al método determinaRestriccion() e imprima el día de la restricción correspondiente. (3 pts). Utilice el método calculoMarchamo() para determinar e imprimir el costo del pago del marchamo que debe pagar ese vehículo. (4 pts). Cree un objeto llamado objetoB con el constructor sin parámetros y solicite al usuario toda la información correspondiente. (4 pts). Determine cuál es de los dos vehículos es el más nuevo e imprima su placa y modelo. Usado únicamente con fines académicos