Está en la página 1de 41

Programacin Orientada a Objetos

Compilado por: Dra. Mayela Coto. Mag. Sonia Mora

RECORDEMOS EL PROBLEMA

Problema: Clculo de la frecuencia cardaca mxima al hacer ejercicio

Una lectora en edad adulta, activa practicante de diversos deportes y actividad fsica, pregunta cul es el lmite para hacer ejercicio fsico, y especficamente cuntas pulsaciones por minuto son las recomendables para ejercitarse en relacin a la cantidad de aos que se tenga. Los fisilogos del deporte establecieron una forma de medir la intensidad del ejercicio tomando a la frecuencia cardaca como parmetro. Formularon por tanto una Frecuencia Cardaca Mxima Terica que surge de la resta: 220 edad (hombres) 226 edad (mujeres)

Problema: Clculo de la frecuencia cardaca mxima al hacer ejercicio

Esa es tericamente la mxima frecuencia con la que puede latir el corazn ante un esfuerzo determinado. Como es una resta, a mayor edad, menor frecuencia Cardaca Mxima. Esa Frecuencia Cardaca Mxima se utiliza para sacar los porcentajes de ejercitacin y medir de esa manera la intensidad o zona de trabajo que se quiere trabajar. Si entrenas en forma aerbica puedes trabajar en una intensidad correspondiente al 60 y el 90% de la frecuencia mxima terica. En personas con un nivel de acondicionamiento fsico muy bajo la intensidad del ejercicio corresponde entre el 50 y el 60% de la frecuencia mxima.

Problema: Clculo de la frecuencia cardaca mxima al hacer ejercicio

Ejemplo: Un persona de 50 aos de edad tiene una frecuencia mxima terica de 220 50 = 170. Por tanto los lmites de trabajo aerbico corresponden a 170 x 0,60 = 102 y 170 x 0,90 = 153. Es decir 102 pulsaciones en un nivel muy bajo de intensidad y 153 como el lmite antes de comenzar a sentir una fatiga importante. EJERCICIO: Defina una clase que permita desarrollar la aplicacin para calcular la frecuencia cardaca mxima al hacer ejercicio.
NECESITAMOS otros mtodos !!!

Mtodos de clculo
Son

los mtodos que permiten realizar diferentes operaciones sobre los objetos de la clase
calculamos la edad de nuestros objetos Persona?

Cmo

Mtodos de clculo

Ejemplo:
unAnno es un valor que recibe mtodo Edad

// mtodo que calcula la edad aproximada de una persona

int Edad( int unAnno ) {

return unAnno - annoNacimiento;


}
Recuerde que annoNacimiento es un atributo de la clase Persona

Mtodos de clculo

Otra forma de hacerlo


Otra forma de hacer el mismo clculo es declarando una variable temporal ( LOCAL)

// mtodo que calcula la edad aproximada de una persona

int Edad(int unAo) { int tempEdad; tempEdad = unAnno - annoNacimiento; return tempEdad; }

En general

La sintaxis que se usa para definir un mtodo es la siguiente:


<TipoDevuelto> <identificador> ([<Parmetros>]) { <instrucciones> }

Dentro de estas <instrucciones> se puede acceder a todos los miembros definidos en la clase, a la cual pertenece el mtodo.

Mtodos

A su vez todo mtodo puede devolver un valor como resultado de haber ejecutado las <instrucciones>. En tal caso el tipo del valor devuelto tiene que coincidir con el especificado en <TipoDevuelto>, y el mtodo tiene que terminar con la clusula return <valor> int Edad(int unAnno) { return unAnno - annoNacimiento; }

En caso que se desee definir un mtodo que no devuelva objeto alguno se omite la clusula return y se especifica void como <TipoDevuelto>.
void setAnnoNacimiento (int unAnnoNac) { annoNacimiento= unAnnoNac; }

Mtodos

Opcionalmente todo mtodo puede recibir en cada llamada una lista de parmetros a los que podr acceder en la ejecucin de las <instrucciones> del mismo. En <parmetros> se indican los tipos y nombres de estos parmetros y es mediante estos nombres con los que se deber referirse a ellos en el cuerpo del mtodo int Edad(int unAnno) { return unAnno - annoNacimiento; }

Mtodos
Cmo calculamos la Frecuencia Cardaca Mxima Terica de nuestro problema? Recuerden que la frmula depende del sexo de la persona

Necesitamos una estructura que nos permita identificar el sexo del objeto

Pensarlo como TAREA

Uso de this

Cuando se quiere que los nombres de los atributos de la clase son idnticos a los nombres de los parmetros en el mtodo constructor, se usa el autoreferenciador this a la par del nombre del atributo.
class Persona { private: string nombre; string apellidos; int annoNacimiento; public: Persona(string nombre, string apellidos, int annoNacimiento) { this -> nombre = nombre; this -> apellidos = apellidos; this -> annoNacimiento = annoNacimiento; } ..

Ejercicio

Un propietario de tierras quiere vender su terreno pero lo quiere hacer segregndolo en terrenos ms pequeos , todos con forma rectangular. Disee una clase que le permita resolver el problema de calcular lo que cuesta cada terreno , con los mtodos bsicos (constructor, set y get) y mtodos de clculo. El costo del terreno es de 50,000 colones por m2 ancho

largo area = largo * ancho perimetro = 2*largo + 2*ancho

Ejemplo: Clase Rectngulo


#include <iostream> // mtodos

using namespace std; class Rectangulo


{ private: // atributos float largo; float ancho;

public:
// constructor con parmetros

Rectangulo (float l, float a)


{ } // constructor sin parmetros Rectangulo ( ) largo = l; ancho = a;

{ }

largo = 0;
ancho = 0;

Ejemplo: Clase Rectngulo


// mtodos set void setLargo(float l) // mtodos get float getLargo( )

{
largo=l;

{
return largo;

}
void setAncho (float a)

}
float getAncho( )

{
ancho=a;

{
return ancho;

Ejemplo: Clase Rectngulo


// mtodos de clculo

float perimetro( )

return 2 * (largo+ ancho);} float area( ) {

return largo * ancho;} float costo( ) {

Note la diferencia en cmo se invoca a un atributo y a un mtodo

return area()*50000; }; // fin clase

Funcin main()
Un programa debe contener una funcin llamada main() que es la primera que se ejecuta El cuerpo de main() est rodeado por los smbolos { }

El encabezado int main() indica que esta funcin le devuelve un nmero entero al sistema operativo La instruccin return 0; indica que el programa debe devolver el nmero 0 al sistema operativo (el programa ejecut satisfactoriamente)

Entrada y salida: cin

El identificador cin es un objeto predefinido en C++ que corresponde al flujo de entrada estndar. El flujo de entrada representa al teclado. La instruccin cin >> variable; es una instruccin de entrada que permite que el programa se detenga a esperar que el usuario introduzca un dato. El operador >> es conocido como el operador de extraccin o leer desde. Toma el valor desde teclado y lo asigna a la variable especificada en su parte derecha.. Al extraer es obligatorio especificar la variable en donde se van a guardar los datos extrados. La sintaxis es: cin>>variable;

Entrada y salida: cout


El identificador cout es un objeto predeterminado que representa el flujo de salida estndar en C++. El flujo de salida estndar representa la pantalla (es posible redirigir la salida hacia otros dispositivos de salida). El operador << es el operador insercin u operador de salida hacia. Inserta (o enva) el contenido de la variable que muestra en la parte derecha en la parte derecha al objeto especificado en su parte izquierda. La sintaxis es: cout<<Mensaje a mostrar; cout <<variable;

Se debe utilizar #include <iostream> para usar cin, cout, endl

Entrada y salida

Ejemplo:

int edad; cout << " Ingrese su edad: "; cin >> edad; cout << " Su edad es " << edad << " aos " << endl;
cin permite la lectura desde teclado

cout permite la salida en pantalla

Ejemplos
int a, b, result; cout << " Cuales son los valores de a y b? " ; cin >> a; cin >> a >> b; cin >> b; result=a+b; cout << " La suma es: " ; cout << " La suma es: " <<result<<endl; cout <<result<<endl; En este caso primero se

cout << " La suma es: " <<a+b<<endl;

calcula a+b y despus se despliega el resultado. NO se ocupa la variable result

cout << " El nombre del gato es: " <<g1.getNombre()<<endl;


Se invoca al mtodo getNombre, y despus se despliega su valor de retorno

Creacin de objetos estticos

Creamos un objeto mediante la siguiente sintaxis: Objeto a(arg1, arg2); //Crea un objeto Objeto, usando el constructor de argumentos arg1 y arg2 Objeto b; //Creo un objeto Objeto, usando el constructor sin parmetros En ambos casos, se crea un objeto en memoria esttica. La memoria esttica se define en el momento en que se compila el programa. Una vez que la funcin finaliza, el objeto se destruye.

Ejercicio: Clase Rectngulo

Defina el main de la clase Rectangulo

Cree dos objetos terrenos de tipo Rectangulo, calcule e imprima el rea y el permetro de ambos y el costo de venta de los mismos.

Ejercicio: Clase Rectngulo


// cuerpo principal

int main( )
{ Rectangulo terrenoA(7,3);

Se crea un terreno de largo 7 y ancho 3

Se llama al mtodo area para terrenoA

cout<< "El area del terreno A es "<<terrenoA.area()<<endl; cout<< "El perimetro del terreno A es "<<terrenoA.perimetro()<<endl;

cout<< "El costo del terreno A es "<<terrenoA.costo()<<endl;


Rectangulo terrenoB(5,2); cout<< "El area del terreno B es "<<terrenoB.area()<<endl; cout<< "El perimetro del terreno B es "<<terrenoB.perimetro()<<endl; cout<< "El costo del terreno B es "<<terrenoB.costo()<<endl; system("pause"); return 0; } Se crea un terreno de largo 5 y ancho 2

Se llama al mtodo perimetro para terrenoB

Ejemplo: Clase Circulo


Una empresa de tejidos necesita crear retazos de telas con el borde ribeteado en hule e impermeabilizadas para cubrir tapas circulares. Declare una clase que permita calcular la cantidad de hule que se necesita para el ribete (en cm) y el costo de impermeabilizarlo ($0,75 por cm2). Defina una clase con atributos, mtodos constructores (con y sin parmetros) y los mtodos set y get para cada uno de los atributos, los mtodos de clculo de rea y longitud, as como la cantidad de hule necesario y el costo de impermeabilizacin.

Ejemplo: Clase Circulo


#include <iostream>

using namespace std;


class Circulo { private:

float radio;
public: Circulo( ) { radio=0; } Circulo( float pRadio ) {

radio=pRadio;
}

Ejemplo: Clase Circulo


void setRadio (float pRadio)
{ radio = pRadio; } float getRadio ( ) { return (radio); }

float longitud() { return 2 * 3.14159 * radio; }

float area()
{ return 3.14159 * radio * radio; }

float costo() { return 0.75* area(); }

Constantes
Se utilizan para representar datos que no cambian durante toda la aplicacin. Tambin se les asocia un tipo de datos.

Se definen como variables normales, pero precediendo el nombre de su tipo la palabra reservada const y dndoles siempre un valor inicial al declararlas. Sintaxis: const <tipo de dato> <identificador> = <valor>;

Ejemplo:

const float PI = 3.14159;

Constantes
Algunas de las ventajas que reportara el uso de la constante PI:
Se pueden cometer errores que no seran detectados por el compilador.
Si se decide cambiar la precisin (usar por ejemplo Mayor 3.1415926) se legibilidad para tendran que hacer los cdigos modificaciones en fuentes. todos los lugares donde aparece la secuencia de dgitos.

Es tedioso y montono escribir constantemente la secuencia 3.14159 en vez de PI

Ejemplo: Clase Circulo


#include <iostream> using namespace std; const float PI = 3.14159;

class Circulo
{ private:

float radio;
public:

Circulo( )
}

radio=0;

Circulo( float pRadio )


radio=pRadio; }

Ejemplo: Clase Circulo


void setRadio (float pRadio)

radio = pRadio;

float getRadio ( ) { return (radio); }

float area()
}

return PI * radio * radio; float longitud() return } float costo() { return 0,75* area(); } { 2 * PI * radio;

};

Ejemplo: Clase Circulo

Escriba la seccin del main para crear TRES objetos Telas


telaA: debe crearse con el constructor con parmetros y tiene un radio de 4 telaB: debe crearse con el constructor con parmetros solicitando previamente el radio al usuario telaC: debe crearse con el constructor sin parmetros y posteriormente asignarle un valor al radio dado por el usuario

Calcule el largo de hule requerido y el costo de impermeabilizar la tela para la tapa C (telaC)

Ejemplo: Clase Circulo


int main() {
int r;
Crea un objeto telaA con radio 4

Circulo telaA(4); cout << "Digite el radio de la segunda tela: " <<endl;
cin>>r; Circulo telaB(r);
Crea un objeto telaB con el valor del radio dado por el usuario

Ejemplo: Clase Circulo


Circulo telaC;
cout << "Digite el radio de la tercera tela: " <<endl; cin>>r; telaC.setRadio(r);

Crea un objeto telaC

Modifica el valor del radio del telaC

cout<< "El costo de impermeabilizar la tela C es: " <<telaC.costo() <<endl;

cout<< "La cantidad de hule requerido para la tela C es: "


<<telaC.longitud()<<endl;

system("pause");
return 0; }

Ejemplo: Clase Circulo


Duplique el valor actual del radio de la telaB Calcule la nueva cantidad de hule y el nuevo costo de impermeabilizarla

Ejemplo: Clase Circulo


int main() {
int r; int r1; r1 = telaB.getRadio(); r1= r1 *2; telaB.setRadio(r1); Modifica el valor del radio <<telaB.costo()<<endl; cout<< "La cantidad de hule requerido para la tela B es: " : <<telaB.longitud()<<endl; system("pause"); Obtiene el radio

cout<< "El costo de impermeabilizar la tela B es:

return 0;
}

Ejemplo: Clase Circulo


int main() {
int r; int r1; r1 = telaB.getRadio(); r1= r1 *2; telaB.setRadio(r1); telaB.setRadio(telaB.getRadio()*2);

..
system("pause"); return 0; }

Tarea (entregar martes 19 de marzo)

EJERCICIO #1: Una agencia de viajes tiene paquetes de descuento para esta Semana Santa. Suponga que existe una clase reservaciones que contiene: nombre del cliente, la edad, el pas de destino y el precio del viaje. Defina la clase. Defina dos mtodos constructores, uno sin parmetros y otro con parmetros. Defina el mtodo destructor. Defina todos los dems mtodos bsicos (set/get). Defina un mtodo que imprima la informacin: nombre y pas destino. En el main:

Cree un objeto reserv1 con datos suministrados por el usuario Cambie el pas de destino Incremente el precio del viaje en un 20% Imprima toda la informacin

Adems .

RECUERDEN: QUIZ JUEVES 14

Usado nicamente con fines acadmicos

También podría gustarte