06 Introduccion a la POO

Anuncio
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
Descargar