Está en la página 1de 13

CLASES

Introduccin a la programacin orientada a objetos


1. Introduccin a la programacin orientada a objetos
2. Las clases
3. El tipo Struct
4. Diferencias entre Class y Struct
5. Pilares de la Programacin Orientada a Objetos
6. Caractersticas fundamentales de las clases en C++
7. Representaciones Grficas
8. Construccin de una clase
9. Atributos
10. Mtodos. Implementacin de los mtodos de una clase
11. Creacin de objetos
12. Paso de mensajes
13. Resumen

CLASES

Introduccin
Un programa se encarga de procesar informacin. El usuario se encarga
de dos cosas fundamentales:
- Los datos que se procesan (datos)
- Las operaciones que procesan esos datos (funciones)

Podemos ligar datos con operaciones

Las operaciones se aplican sobre unos datos, ms exactamente, sobre


unos tipos de datos. Por ejemplo, si tenemos la operacin de multiplicar
complejos, no tiene sentido multiplicar cadenas.
Si tenemos un array de enteros, podemos recorrerlo, buscar un
elemento, etc..
Si tenemos una pantalla, podemos escribir en ella, borrar, etc..

2
CLASES

Programacin orientada a objetos

Aparece otro paradigma de programacin; reconocemos los datos sobre


los que vamos a trabajar y definimos esos datos por las operaciones que
se pueden realizar sobre ellos.

En la programacin orientada a objetos, lo importante son los


objetos.

Objeto : entidad compuesta de unos datos y las operaciones que


realizamos sobre esos datos.

Clase : Los datos y las operaciones comunes a un conjunto de objetos


forman un conjunto que se conoce como clase.

CLASES

Las clases
Las clases C++ permiten definir nuevos tipos de datos,
Cada clase es un nuevo tipo,
Cada elemento de la clase se caracteriza por ciertos valores y las
operaciones disponibles para crear dichos elementos, modificarlos y
destruirlos.

Podemos establecer un paralelismo entre los tipos de datos vistos hasta el


momento (int, char, arrays, estructuras,) y las clases:

1. Ambos son tipos


Una clase CL no est definida por el
El tipo int est definido por lenguaje, por lo que debe ser definida
el lenguaje y las operaciones que por el programador.
pueden realizarse estn completamente Esta definicin debe contener
determinadas. dos cosas: datos y operaciones.

Metodologa y Tcnicas de Programacin I 2003/2004 4


CLASES

Las clases
2. Pueden declararse elementos de ese tipo

Podemos declararnos elementos Podemos declararnos elementos de la


de tipo int, es lo que llamamos clase CL, en ste caso los llamaremos
variables. objetos o instancias de la clase CL.

Esto implica que podemos tener muchos objetos de una misma clase,
igual que podamos definir muchas variables de un tipo.

Pero una clase no es tan simple como un tipo de datos

Una clase es un conjunto


de datos y un conjunto de operaciones, Datos Atributos
que como hemos dicho, Miembros
deben ir unidas. Operaciones Mtodos

CLASES

El tipo Struct
Hemos visto anteriormente cmo implementar un tipo de dato Cliente
por medio de una estructura, y unas operaciones para manejarla:

struct cliente
{ No existe una relacin explcita entre
char nombre[30];
Miembros

char calle[30]; las funciones y los datos con los


double importe_factura; que se trabaja
char tlf[20] ;
int edad;
} ;

cliente c; En C++ podemos asociar las


void visualizar_datos_cliente ( cliente c ); operaciones con los datos simplemente
void modificar_edad ( cliente & c );
void hacer_descuento ( cliente & c, double 0,5 );
incluyendo las funciones dentro de
la definicin de la estructura

6
CLASES

El tipo Struct
En C++ podemos asociar las
struct cliente operaciones con los datos simplemente
{
char nombre[30];
incluyendo las funciones dentro de
char calle[30]; la definicin de la estructura
PBLICO

double importe_factura;
char tlf[20] ;
int edad; Las funciones declaradas de esta forma
se llaman mtodos o funciones
void visualizar_datos_cliente ( );
void modificar_edad ( ); miembro.
void hacer_descuento (double);
} ;

cliente c;

Para ejecutar stos mtodos, se ha de utilizar c.edad = 23 ;


una variable de esa estructura con el c.visualizar_datos( );
c.hacer_descuento(0.5);
operador punto . ( acceso habitual a miembros)

CLASES

Clases y miembros
La estructura anterior proporciona un conjunto de operaciones adecuadas
sobre el tipo Cliente, pero no se especifica que esas funciones deban ser
las nicas que accedan a los datos del tipo.

Un tipo struct no evita que se acceda class Cliente


{
al dato edad y se actualice a 200. char nombre[30];
char calle[30];
PRIVADO

double importe_factura;
char telefono[20] ;
int edad;

Para que los MIEMBROS, void visualizar_datos_cliente ( );


void modificar_edad ( );
sean privados, utilizamos
void hacer_descuento (double);
la palabra class en lugar de struct. } ;

cliente c;

8
CLASES

Clases y miembros
El identificador public separa la clase
class Cliente en dos partes:
{
char nombre[30];
char calle[30]; parte privada: donde hemos declarado
double importe_factura; los datos de la clase.
char telefono[20] ;
int edad;
public: parte pblica: donde declaramos las
void visualizar_datos_cliente ( ); funciones de la clase.
void modificar_edad ( );
void hacer_descuento (double );
} ;

cliente c; Solo podemos acceder a los miembros


privados a travs de las funciones
pblicas.
public: Especificador de acceso

CLASES

Diferencias entre class y struct

En una clase class, los miembros son privados por defecto, mientras que
en una estructura struct, los miembros son pblicos por defecto.

class Cliente Con sta definicin del tipo Cliente,


{ se puede acceder a la parte pblica,
char nombre[30];
char calle[30]; pero no a la privada.
double importe_factura;
char telefono[20] ;
int edad; void main()
public: {
void visualizar_datos_cliente ( ); cliente c;
void modificar_edad ( );
c.visualizar_datos_cliente( ) ;
void hacer_descuento ( double );
} ; c.edad = 8 ;
...
Error de compilacin.

10
CLASES

Pilares de la programacin orientada a objetos

Ocultacin de la informacin

Solo se puede acceder a los datos por medio de las funciones pblicas.
Los datos estn ocultos y eso asegura que no se puedan modificar por
funciones externas al objeto.

Encapsulamiento de la informacin

Encapsulacin de cdigo y datos.

11

CLASES

Ejemplo: y

class Circulo
{
private :
float coor_x;
float coor_y;
x
float radio;
public : La clase crculo tiene 6 miembros:
void inicializar ( float a, float b, float r) - 3 atributos privados
{ coor_x = a;
coor_y = b; - 3 mtodos o funciones miembro
radio = r;
}
float visualizar_radio ( )
Los mtodos pueden implementarse
{
return radio; dentro de la clase:
} se llaman funciones insertadas
float calcular_area ( ) ;
} ; Tambin se puede implementar los
mtodos fuera de la clase

12
CLASES

Caractersticas fundamentales de las clases en C++

Nombre de la clase. Sirve para identificar a todos los objetos que


tengan unas determinadas caractersticas.

Conjunto de atributos. Datos miembro. El valor de los atributos


representan el estado de cada objeto.

Conjunto de mtodos. Funciones miembro. Permite que los objetos


cambien de estado, dependiendo del estado anterior que tuviera el
objeto.

Niveles de acceso para proteger ciertos miembros de la clase.


Normalmente, se definirn como ocultos (privados) los atributos y
visibles (pblicos) los mtodos.

13

CLASES

Representaciones grficas
Para representar grficamente las clases y objetos, vamos a utilizar
diagramas similares a los de UML (Lenguaje de Modelado Unificado).

Nombre Nombre de la clase


Ejemplo:
Atributos Atributos definidos
en la clase
Circulo
Mtodos
Mtodos definidos
coor_x
en la clase
Pblico (interfaz) coor_y
radio

Mtodos: inicializar( float, float, float)


Si la funcin devuelve un valor, el visualizar_radio( ) : float
tipo se pone al final precedido de : calcular_area( ) : float

Metodologa y Tcnicas de Programacin I 2003/2004 14


CLASES

Construccin de una clase

La definicin de una clase es sintcticamente similar a una estructura


(struct).
class <nombre_de_la clase>
{
<cuerpo de la clase>
class <nombre_de_la clase> };
{
private:
<lista miembros privados (atributos y mtodos)> Especificadores
de acceso
public:
<lista miembros pblicos (atributos y mtodos)>
};

15

CLASES

Ejemplo

Vamos a modelar una clase cuyos objetos sean las cuentas de un banco.

Cuenta
La clase se llama Cuenta.
numero_cuenta
saldo Qu informacin ha de contener los
interes_anual objetos de la clase? Es decir, cada una de
las cuentas.
inicializar(long)
dar_saldo () : float Qu operaciones se van a necesitar para
ingresar ( float) gestionar las cuentas?
visualizar_datos()

16
CLASES

Ejemplo
class Cuenta
Cuenta {
private:
numero_cuenta
long int numero_cuenta;
saldo float saldo;
interes_anual float interes_anual;
public:

inicializar(long)
...
dar_saldo () : float
ingresar ( float) };

Interfaz Los mtodos o funciones miembro, se declaran dentro de la clase.


La implementacin de dichos mtodos,
puede hacerse dentro (funciones insertadas) o fuera.

17

CLASES

Atributos (datos miembro)

Los atributos describen el estado de un objeto.


Un atributo consta de dos partes: nombre del atributo y valor
Los atributos de una clase pueden ser:
- de cualquier tipo bsico (int, float, bool,)
- de tipo compuesto (estructura )
- un puntero class Cuenta
{
- un array
private:
- objetos de otra clase long int numero_cuenta;
float saldo;
float interes_anual;
public:
..
}

Metodologa y Tcnicas de Programacin I 2003/2004 18


CLASES

Ejemplo
class Cuenta
Cuenta {
private: Funcin
numero_cuenta long int numero_cuenta;
saldo insertada, no
float saldo;
interes_anual float interes_anual;
acaba en ;
public:
inicializar(long) void inicializar(long int num)
dar_saldo () : float {
ingresar ( float) numero_cuenta = num;
saldo = 0;
interes_anual = 0;
}
float dar_saldo ();
void ingresar( float); Prototipos
Implementacin de los };
mtodos fuera de la clase

19

CLASES

Mtodos definidos interna y externamente


Los mtodos se definen de la misma forma que las funciones normales.
Lo normal es que dentro del cuerpo de la clase, solo aparezcan los
prototipos, y la implementacin de las funciones fuera. As los detalles
de la implementacin permanecen ocultos y la interfaz queda mucho
ms clara.

class Cuenta
{ ...
private: void Cuenta :: ingresar (float s)
long int numero_cuenta; {
float saldo; saldo = saldo + s ;
float interes_anual; }
public:
void inicializar(long int num); float Cuenta :: dar_saldo ()
float dar_saldo (); {
void ingresar(float); return saldo ;
}; }

20
CLASES

Implementacin de los mtodos fuera de la clase


Esta es la opcin ms correcta. La implementacin del mtodo ingresar
sera el siguiente:

Nombre de la clase a la Operador de resolucin de


que pertenece la funcin mbito ( :: )

void Cuenta :: ingresar (float s)


{
saldo = saldo + s ;
}
Nombre del mtodo

Se pone el nombre de la clase delante del nombre del mtodo, porque


podemos tener varias clases con el mismo mtodo.

21

CLASES

Implementacin de los mtodos fuera de la clase


La implementacin del mtodo dar_saldo sera el siguiente:

Nombre de la Operador de resolucin de


clase mbito ( :: )

float Cuenta :: dar_saldo ()


{
return saldo ;
} Acceso al atributo
Dato privado

En el cdigo de los mtodos se puede usar todo lo que est declarado en la


clase: lo pblico y lo privado.

22
CLASES

Creacin de elementos de una clase: creacin de objetos


La clase ya est terminada (declarada e implementada). Ya podemos
crear objetos y trabajar con ellos.

La sintaxis es igual que para declarar variables de un cierto tipo.

<tipo_de_dato> <nombre_de_variable> ;
class Circulo
{ <Nombre de la clase> <nombre_del_objeto> ;
private :
float coor_x;
float coor_y;
float radio;
Circulo c1, c2, c3;
public :
void inicializar ( );
float visualizar_radio ( );
float calcular_area ( ) ;
} ; Objetos de la clase Crculo

23

CLASES

Uso y manipulacin de objetos: paso de mensajes


Una vez creados los objetos, podemos trabajar con ellos. Si queremos
que un determinado objeto ejecute un mtodo, utilizamos el operador
punto () . A esto se le conoce como paso de mensajes.
Los objetos se manipulan mediante el paso de mensajes .
Cada paso de mensaje provoca la ejecucin del correspondiente mtodo
definido en la clase del objeto receptor.
Cada objeto entiende tantos mensajes como mtodos estn definidos en
su clase.
Se pasa el mensaje
void Circulo:: inicializar ( float a, float b, float r) inicializar al objeto c1
{ coor_x = a;
coor_y = b;
radio = r; Circulo c1, c2, c3;
} c1.inicializar (1, 2, 4);
Los objetos c1, c2 tienen valores diferentes, c2.inicializar (0,0,5);
tienen distinto estado.

24
CLASES

Pblico y privado
 Los atributos deben ser privados.
 Los mtodos o funciones miembro deben ser pblicas.
 A travs del objeto de una clase slo se puede acceder a lo que est
declarado como pblico en la clase (con el operador ).
 Lo privado solo puede ser accedido desde el cdigo de los mtodos.

class Circulo
{
private :
float coor_x; Circulo c1, c2, c3;
float coor_y; c1.coor_x = 4;
float radio; c1.radio = 7 ;
public :
.
} ;
Error
Los atributos coor_x y radio son privados

25

CLASES

Resumen:
Las instancias de un tipo cualquiera se denominan variables, mientras
que las instancias de una clase se denominan objetos.
Los atributos describen el estado de un objeto. Un atributo consta de dos
partes: nombre del atributo y valor.
Los mtodos describen el comportamiento de los objetos de una clase.
Representan las operaciones que se pueden realizar con los objetos de la
clase. La ejecucin de un mtodo puede conducir a cambiar el estado del
objeto.
Los objetos se manipulan mediante el paso de mensajes.
Para ejecutar un mtodo asociado a un objeto, se realiza una accin que
se conoce como envo de mensajes.
Las operaciones y valores visibles desde el exterior de la clase, es lo que
se denomina Interfaz de la clase.

26

También podría gustarte