Está en la página 1de 9

Ejemplo de clase

1. Ejemplo de clase : La clase Cuenta


2. Uso de la clase Cuenta

3. Mtodos y objetos receptores de mensajes


(Importante)

Metodologa y Tcnicas de Programacin I 2003/2004 1

Ejemplo de clase

Una clase para cuentas de un banco


Vamos a modelar con una clase, un nuevo tipo de datos , donde los
elementos de la clase, los objetos, son cuentas bancarias. El nombre de la
clase que vamos a modelar es Cuenta.

, La informacin asociada a cada una de las cuentas:


N de cuenta, saldo de la cuenta, inters anual

Establecemos un nombre y un tipo para cada uno de los atributos, y los


colocamos en la parte privada.
#include <iostream.h>
class Cuenta
Cuenta {
El nombre de la clase private:
numero_cuenta
suele empezar en saldo long int numero_cuenta;
maysculas interes_anual
float saldo;
float interes_anual;
};

Metodologa y Tcnicas de Programacin I 2003/2004 2


Ejemplo de clase

Ahora tenemos que pensar en las operaciones necesarias para la gestin


de cuentas bancarias. Por ejemplo, necesitaremos un mtodo que se
encargue de la inicializacin de los objetos de la clase Cuenta.

Cuenta #include <iostream.h>


class Cuenta
numero_cuenta {
private:
saldo long int numero_cuenta;
interes_anual float saldo;
float interes_anual;
inicializar(long) public:
void inicializar( long int num);
};
El atributo void Cuenta:: inicializar( long int num)
numero_cuenta se {
actualiza en ste numero_cuenta = num;
mtodo, y nunca se saldo = 0;
interes_anual = 0;
puede cambiar }

Metodologa y Tcnicas de Programacin I 2003/2004 3

Ejemplo de clase

Se nos ocurren ms operaciones? Cuenta


numero_cuenta
Puede ser til disear mtodos que saldo
interes_anual
devuelvan el contenido de los atributos:
inicializar(long)
#include <iostream.h>
dar_saldo () : float
class Cuenta dar_interes(): float
{
private: void Cuenta:: inicializar( long int num)
long int numero_cuenta; {
float saldo; numero_cuenta = num;
float interes_anual; saldo = 0;
public: interes_anual = 0;
void inicializar( long int num); }
float dar_saldo();
float dar_interes(); float Cuenta:: dar_saldo()
}; { return saldo; }

float Cuenta:: dar_interes()


{ return interes_anual ; }

Metodologa y Tcnicas de Programacin I 2003/2004 4


Ejemplo de clase

Se nos ocurren ms operaciones?


Cuenta
#include <iostream.h>
class Cuenta numero_cuenta
{ saldo
private: interes_anual
long int numero_cuenta; inicializar(long)
float saldo;
float interes_anual;
dar_saldo () : float
public: dar_interes(): float
void inicializar( long int num); mod_saldo (float);
float dar_saldo();
mod_interes( float );
float dar_interes();
void mod_saldo (float s); ingreso ( float);
void mod_interes( float i ); reintegro ( float ): bool
void ingreso ( float cantidad); mostrar_datos ();
bool reintegro ( float r);
void mostrar_datos ();
}; Para usar la clase, basta con conocer su
nombre y la forma de los mtodos

Metodologa y Tcnicas de Programacin I 2003/2004 5

Ejemplo de clase

Ms operaciones ...
Actualiza el saldo de la cuenta
void Cuenta :: mod_saldo (float s)
{ saldo = s ; }

void Cuenta :: mod_interes( float i ) Actualiza el inters anual


{ interes_anual = i ; }

void Cuenta :: ingreso ( float cantidad)


{ saldo = saldo + cantidad ; }
Devuelve true si hay saldo
suficiente y resta la cantidad.
bool Cuenta :: reintegro ( float r) Devuelve false si no hay saldo
{
suficiente
if ( r > saldo ) return false;
else
{ saldo = saldo - r; void Cuenta :: mostrar_datos ()
return true; {
} cout << N de cuenta : << numero_cuenta << endl ;
} cout << Saldo: << saldo << endl ;
}

Metodologa y Tcnicas de Programacin I 2003/2004 6


Ejemplo de clase

Uso de la clase Cuenta


#include <iostream.h>
class Cuenta
{
...
};

void main();
{
Cuenta cc; // cc es un objeto de la clase cuenta
cc.inicializar( 24316622 ) ;
cc.mod_saldo(10000); N de cuenta: 24316622
cc.mod_interes(2); Saldo: 10000
cc.mostrar_datos( );
cc.ingreso( 12000 ); N de cuenta: 24316622
cc.mostrar_datos( ); Saldo: 22000
bool b;
b = cc.reintegro(10000);
if (b==false) cout << No hay saldo; N de cuenta: 24316622
cc.mostrar_datos( ); Saldo: 12000
}

Metodologa y Tcnicas de Programacin I 2003/2004 7

Ejemplo de clase

Qu ocurre durante la ejecucin?


#include <iostream.h>
class Cuenta
{ Se crea un objeto llamado cc de la
... clase Cuenta
};

cc
void main();
{
Cuenta cc; numero_cuenta
cc.inicializar( 24316622 ) ;
cc.mod_saldo(10000); ?
cc.mod_interes(2);
cc.mostrar_datos( ); saldo
cc.ingreso( 12000 );
cc.mostrar_datos( );
?
bool b;
interes_anual
b = cc.reintegro(10000);
if (b==false) cout << No hay saldo; ?
cc.mostrar_datos( );
}

Metodologa y Tcnicas de Programacin I 2003/2004 8


Ejemplo de clase

Qu ocurre durante la ejecucin?


#include <iostream.h>
class Cuenta Se enva el mensaje inicializar al objeto cc
{ proporcionando el argumento 24316622
...
};

cc
void main();
{
Cuenta cc; numero_cuenta
cc.inicializar( 24316622 ) ;
cc.mod_saldo(10000); 24316622
cc.mod_interes(2);
cc.mostrar_datos( ); void Cuenta:: inicializar( long int num) saldo
cc.ingreso( 12000 ); {
cc.mostrar_datos( ); numero_cuenta = num; 0
bool b; saldo = 0;
interes_anual
b = cc.reintegro(10000); interes_anual = 0;
if (b==false) cout << No}hay saldo; 0
cc.mostrar_datos( );
}

Metodologa y Tcnicas de Programacin I 2003/2004 9

Ejemplo de clase

Qu ocurre durante la ejecucin?


#include <iostream.h>
class Cuenta Se enva el mensaje mod_saldo al objeto cc
{ proporcionando el valor 10000 como argumento
...
};

cc
void main();
{
Cuenta cc; numero_cuenta
cc.inicializar( 24316622 ) ;
cc.mod_saldo(10000); 24316622
cc.mod_interes(2);
cc.mostrar_datos( ); saldo
cc.ingreso( 12000 );
cc.mostrar_datos( );
0
10000
bool b; void Cuenta :: mod_saldo (float s)
interes_anual
b = cc.reintegro(10000); saldo = s ; }
{
if (b==false) cout << No hay saldo; 0
cc.mostrar_datos( );
}

Metodologa y Tcnicas de Programacin I 2003/2004 10


Ejemplo de clase

Qu ocurre durante la ejecucin?


#include <iostream.h> Se ejecuta el mtodo mod_interes de la clase
class Cuenta Cuenta, sobre el objeto cc,modificndose el valor
{
...
del atributo interes_anual.
};

cc
void main();
{
Cuenta cc; numero_cuenta
cc.inicializar( 24316622 ) ;
cc.mod_saldo(10000); 24316622
cc.mod_interes(2);
cc.mostrar_datos( ); saldo
cc.ingreso( 12000 );
cc.mostrar_datos( );
10000
bool b; void Cuenta :: mod_interes( float i ) interes_anual
b = cc.reintegro(10000);{ interes_anual = i ; }
if (b==false) cout << No hay saldo;
cc.mostrar_datos( );
20
}

Metodologa y Tcnicas de Programacin I 2003/2004 11

Ejemplo de clase

Qu ocurre durante la ejecucin?


#include <iostream.h> Se enva el mensaje mostrar_datos al
class Cuenta objeto cc. Se ejecuta el mtodo mostrar_datos
{ sobre el objeto cc. Se visualizan por pantalla
...
};
los valores de los atributos numero_cuenta y saldo.

cc
void main();
{
Cuenta cc; numero_cuenta
cc.inicializar( 24316622 ) ;
cc.mod_saldo(10000); 24316622
cc.mod_interes(2);
cc.mostrar_datos( ); saldo
cc.ingreso( 12000 );
cc.mostrar_datos( );
10000
bool b; void Cuenta :: mostrar_datos () interes_anual
b = cc.reintegro(10000);
{
if (b==false) cout << No
cout <<hay
Nsaldo;
de cuenta : << numero_cuenta; 2
cc.mostrar_datos(cout ); << Saldo: << saldo << endl ;
} }

Metodologa y Tcnicas de Programacin I 2003/2004 12


Ejemplo de clase

Qu ocurre durante la ejecucin?


Se enva el mensaje ingreso al objeto cc
#include <iostream.h> proporcionando el valor 12000 como argumento.
class Cuenta
{
Se ejecuta el mtodo ingreso de la clase Cuenta
... sobre el objeto cc, modificndose el valor del
}; atributo saldo.

void main(); cc
{
Cuenta cc; numero_cuenta
cc.inicializar( 24316622 ) ;
cc.mod_saldo(10000); 24316622
cc.mod_interes(2);
cc.mostrar_datos( ); saldo
cc.ingreso( 12000 );
cc.mostrar_datos( ); 10000
22000
bool b;
b = cc.reintegro(10000);void Cuenta :: ingreso ( float cantidad) interes_anual
{
if (b==false) cout << No hay saldo;
cc.mostrar_datos( ); saldo = saldo + cantidad ; 2
} }

Metodologa y Tcnicas de Programacin I 2003/2004 13

Ejemplo de clase

Qu ocurre durante la ejecucin?


#include <iostream.h> Se enva el mensaje reintegro al objeto cc con el
class Cuenta valor 10000 como argumento.
{ Se ejecuta el mtodo reintegro de la clase
...
};
Cuenta sobre el objeto cc.

void main(); cc
{
Cuenta cc; numero_cuenta
cc.inicializar( 24316622 ) ;
cc.mod_saldo(10000); 24316622
cc.mod_interes(2);
cc.mostrar_datos( ); saldo
cc.ingreso( 12000 );
cc.mostrar_datos( ); 10000
22000
bool b;
b = cc.reintegro(10000); interes_anual
if (b==false) cout << No hay saldo;
cc.mostrar_datos( ); 2
}

Metodologa y Tcnicas de Programacin I 2003/2004 14


Ejemplo de clase

Qu ocurre durante la ejecucin?


... Como la cantidad 10000 no es mayor que el

void main();
atributo saldo, se le resta a ese atributo la cantidad
{ y se devuelve true como resultado de ste mtodo.
Cuenta cc;
cc.inicializar( 24316622 ) ;
cc.mod_saldo(10000); cc
cc.mod_interes(2);
cc.mostrar_datos( ); numero_cuenta
cc.ingreso( 12000 );
cc.mostrar_datos( ); 24316622
bool b;
b = cc.reintegro(10000); bool Cuenta :: reintegro ( float r) saldo
if (b==false) cout << No hay{saldo;
cc.mostrar_datos( ); if ( r > saldo ) return false; 22000
12000
} else
{ saldo = saldo - r; interes_anual
return true;
} 2
}

Metodologa y Tcnicas de Programacin I 2003/2004 15

Ejemplo de clase

Mtodos y objetos receptores de mensajes Importante !

Ya sabemos que un mtodo se ejecuta cuando se pasa el correspondiente


mensaje al objeto.
El cdigo del mtodo se ejecuta sobre el objeto que ha recibido el
mensaje:

Los atributos que se utilizan en el mtodo, se refieren a los


atributos del objeto receptor del mensaje.

void Cuenta :: ingreso ( float cantidad)


{
saldo = saldo + cantidad ;
}
cc.saldo(10000);
...
Se refiere al atributo saldo del objeto cc

Metodologa y Tcnicas de Programacin I 2003/2004 16


Ejemplo de clase

Mtodos y objetos receptores de mensajes Muy Importante !

Sin embargo, es posible que dentro de un mtodo se llame a otro


mtodo. En ste caso, se dice que el objeto se enva un mensaje a s
mismo.
Por ejemplo, podemos escribir un mtodo para permitir el abono de
intereses que se produce a final de ao:
Se calculan los intereses en base al
void Cuenta :: abono_intereses ( )
inters anual y
{ se incrementa el saldo.
float cantidad;
cantidad = (saldo * interes_anual ) / 100 ; Cuando no figura delante ningn
ingreso (cantidad);
}
objeto receptor del mensaje, ste se
enva a uno mismo

cc.abono_intereses();
...
El objeto cc se enva el mensaje ingreso a s mismo

Metodologa y Tcnicas de Programacin I 2003/2004 17

También podría gustarte