Sunteți pe pagina 1din 31

Unidad I Programacin Orientada a Objetos en C++

Programacin Orientada a Objetos en C++


Programacin I - 0416202

Programacin Orientada a Objetos en C++

Contenido
Esta leccin abarca los siguientes temas:
Estructura y declaracin de una clase
Implementacin de Atributos y mtodos
Modificadores de Acceso a mtodos y atributos
El constructor y destructor
Declaracin de objetos
Creacin de objetos de forma dinmica
Uso de objetos
Manipulando Atributos
Invocando mtodos
El puntero this
Arreglos de Objetos
Mtodos Setter y Getter

Programacin Orientada a Objetos en C++

Estructura y declaracin de una clase


Preprocesador
El preprocesador analiza el archivo fuente antes de la fase de
compilacin real, y realiza las sustituciones de macros y procesa las
directivas.
Una directiva de preprocesador es una lnea cuyo primer carcter es
un #. Por ejemplo, la directiva #define identificador, sirve para
definir macros, stas suministran un sistema para la sustitucin de
palabras.
Si se intenta definir un identificador de macro que ya est definido,
se producir un warning, si la definicin no es exactamente la
misma. Para ello se usan:
#ifndef identificador
#define identificador
..
#endif

Programacin Orientada a Objetos en C++

Estructura y declaracin de una clase


Despus de creado el proyecto, hay que aadir un nuevo archivo:
File/New/Source File CTRL+N

En este archivo, el
primer paso es
colocar la directiva
del PreProcesador

Programacin Orientada a Objetos en C++

Estructura y declaracin de una clase


Ahora se empieza a transcribir la clase.

Palabra reservada
para definir una clase.
Por lo general un
archivo contiene una
sola clase, y el nombre
de ste debe coincidir
con el nombre de la
clase.

Los modificadores
definen el acceso a
los atributos y a los
mtodos.

Los elementos entre


<> indica que son
opcionales.
Un atributo puede
ser un tipo de dato
primitivo o puede
ser otro objeto cuya
clase ya se ha
definido.

Programacin Orientada a Objetos en C++

Estructura y declaracin de una clase


Generalmente,
la
implementacin de una
clase se realiza en un
archivo independiente,
de extensin .cpp .h lo
que
ayuda
a
la
reutilizacin del cdigo.
Posteriormente
se
pueden incluir como
archivos de cabecera en
un programa usando la
directiva de compilador
#include.

Programacin Orientada a Objetos en C++

Modificadores de acceso
Cuando se crea una nueva clase en C++, se puede especificar el nivel
de acceso que se quiere para los atributos de las instancias y los
mtodos definidos en la clase por medio de los siguientes
modificadores de acceso:
public
Cualquier clase puede acceder a las propiedades y mtodos
pblicos.
protected
Slo las clases derivadas y aquellas situadas o no en el mismo
paquete, pueden acceder a las propiedades y mtodos protegidos.
private
Las variables y mtodos privados slo pueden ser accedidos desde
dentro de la clase.
Si en la definicin de la clase se obvia el modificador de
acceso, la clase lo asume como privado (private).

Programacin Orientada a Objetos en C++

Modificadores de acceso
La siguiente tabla resume los modificadores de acceso en C++
Visibilidad

public

protected

private

Desde la propia clase

Si

Si

Si

Desde otra clase

Si

No

No

Desde una sub-clase

Si

Si

No

Programacin Orientada a Objetos en C++

Estructura y declaracin de una clase


Ejemplo de clase

Programacin Orientada a Objetos en C++

Implementacin de mtodos
Existen dos formas para implementar (escribir el cdigo) los mtodos
de una clase en C++:
En lnea, se refiere cuando la implementacin se hace dentro de
la clase.
Fuera de lnea, cuando se codifica la implementacin del
mtodo fuera de la clase, puede ser en otro archivo. Esta forma
se usa cuando el cdigo del mtodo es muy grande, entonces
slo se coloca el prototipo de la funcin dentro del bloque de
declaracin de la clase.

Programacin Orientada a Objetos en C++

Implementacin de mtodos
Se definen de manera similar a cualquier otra funcin de Lenguaje C
pero, requiere incluir el operador de resolucin de mbito :: en la
definicin del mtodo.

TipoRetorno NombreClase::nombreMetodo ( ListaDeParametros ){


//Declaracin de variables locales
//Lista de sentencias propias del mtodo
}
El operador :: se conoce
como operador de mbito, y
sirve
para
indicar
la
pertenencia de un mtodo o
atributo
a
una
clase
determinada.

La lista de parmetros son


declaraciones de Objetos
separadas por coma. Los
parmetros se pasan siguiendo
las mismas reglas de Lenguaje C.

Programacin Orientada a Objetos en C++

Implementacin de mtodos
Mtodo definido En Lnea

Fuera de Lnea

Programacin Orientada a Objetos en C++

Implementacin de mtodos
Continuando con el
ejemplo de la clase
Casa,
implementemos sus
mtodos.
En la mayora de los
casos en el archivo
de cabecera .h se
define la estructura
de la clase y el cdigo
de cada mtodo se
escribe en un archivo
que tenga el mismo
nombre de la clase
pero con extensin
.cpp

Programacin Orientada a Objetos en C++

Instanciacin de objetos
Una vez que la clase ha sido implementada se pueden declarar
objetos: como variables locales de mtodos o como atributos de
otras clases, siguiendo las reglas de sintaxis de C++ para cada caso.

Ejemplo:
Casa miCasa;
Estudiante rafael;
Vehiculo tucson;

Para declarar un objeto se


escribe primero el nombre de la
clase y luego el nombre
(identificador) del objeto. stos
son objetos estticos.

Cuando se declara un objeto en C++, el sistema reserva memoria de


manera automtica para el objeto.

Programacin Orientada a Objetos en C++

Instanciacin de objetos
Si se desea declarar un objeto de una clase que se encuentra en
otro archivo, por ejemplo, en el archivo main.cpp, se desea
declarar un objeto de la clase Casa, que se encuentra en el
archivo Casa.h
Es necesario incluir el archivo
de forma explcita, por medio
del nombre y usando la
directiva #include.

Programacin Orientada a Objetos en C++

Manipulacin de atributos
Para que un objeto pueda usar sus caractersticas y mtodos, debe
establecer comunicacin con el mismo, de esta manera podr
cambiar el estado del objeto y/o realizar alguna accin. Estas operaciones
Los objetos proporcionan dos
formas de hacer esto:
1. Manipulando
los
atributos
(no
recomendable
desde
otras clases).
Para acceder a los atributos que
tienen los objetos se utiliza el .
acompaado del nombre del objeto:
nombreObjeto.nombreAtributo

solo son posibles


si la clase Casa
permite el acceso
(depende de los
modificadores
usados en la clase
Casa)

Programacin Orientada a Objetos en C++

Invocacin de mtodos
2. Invocando sus mtodos,
haciendo un pase de
mensajes.

Programacin Orientada a Objetos en C++

Constructores
Es un mtodo con un propsito especfico que se ejecuta
automticamente cuando se crea un objeto de una clase.
Generalmente, un constructor se utiliza para inicializar los
atributos de una clase.
No retorna ningn valor (ni un void), pero si puede tomar los
parmetros que requiera.
Debe tener el mismo nombre de la clase.

Programacin Orientada a Objetos en C++

Constructores

Declaracin de
constructores

Programacin Orientada a Objetos en C++

Constructores

Constructor por defecto

Constructores alternativos
paramtricos

Programacin Orientada a Objetos en C++

En Memoria

Constructores

miCasa1

Uso de los constructores

Uso del constructor


por defecto

direccion =
numHabitaciones= 0

miCasa2
Uso del constructor
que recibe char[], int

Uso del constructor


que recibe un char[]

direccion = Av Para
numHabitaciones= 4

miCasa3
direccion = Pirineo
numHabitaciones= 0

miCasa4
Uso del constructor
que recibe un int

direccion = null
numHabitaciones= 3

Programacin Orientada a Objetos en C++

Instanciacin de objetos dinmicos


Para crear una instancia de una Clase de forma dinmica se debe
hacer solicitud de memoria usando la palabra reservada new y un
puntero de la Clase en cuestin, la sintxis es la siguiente:
NombreClase *punteroObjeto;
punteroObjeto = new NombreClase(<parmetros>);
Puntero de la clase

Operador
para
solicitar memoria

Constructor de la
clase a la cual
pertenece
el
objeto

Lista
de
argumentos que
necesita
el
constructor.

Se crea un objeto
Ejemplo:
estudiante con el
Estudiante *rafael = new Estudiante();
estado dado por
Vehiculo *tucson = new Vehiculo(Fiat, Palio, 2005, Rojo); los valores por
defecto que
Se crea un objeto cuyos
disponga el
valores de sus atributos estn
Programador de
bien definidos y dados por el
la Clase
usuario de la Clase

Programacin Orientada a Objetos en C++

Manipulacin de objetos dinmicos


Para usar las caractersticas y mtodos de un objeto dinmico, se
hace del mismo modo que con objetos estticos, todo depender de
la permisologa de acceso que ofrezca la clase de dicho objeto. La
nica distincin, es que se usa el operador -> en lugar del
operador .
Ejemplo:
Casa *miCasa = new Casa(Santa Teresa, 2);

miCasa->cargarDatos();
cout<<La direccion es: <<miCasa->direccin<<endl;

Programacin Orientada a Objetos en C++

El puntero this
Uno de los usos que se le da, es para resolver ambigedad entre
argumentos y atributos.

Error de ambigedad, se
resuelve usando this
Tambin sirve para invocar
mtodos con el mismo
objeto que invoc. Para el
ejemplo es miCasa

Programacin Orientada a Objetos en C++

Destructores
Son los mtodos que se ejecutan automticamente cuando se
destruye un objeto.
Tienen el mismo nombre del constructor, pero se diferencian en
que est precedido del carcter ~
No deben tener ningn tipo de retorno.

No pueden aceptar parmetros.


Slo puede existir un destructor.
Generalmente se utilizan para liberar memoria que fue asignada
por el constructor.
C++ crea un destructor vaco por defecto, en caso de no existir
uno declarado explcitamente.

Programacin Orientada a Objetos en C++

Destructores
Si el mbito del objeto es local, el destructor es llamado cuando el
control es pasado fuera de su bloque de definicin.
Si el objeto fue creado dinmicamente (con new) el destructor es
llamado cuando se invoca el operador delete.

Programacin Orientada a Objetos en C++

Arreglos de objetos
La declaracin de un vector de objetos se realiza de forma similar a
como se declaran los vectores de tipos de datos primitivos.
Ejemplo:
Casa misCasas[15]
Rectangulo potreros[12];
Circulo contorno[8];
Cada objeto del vector se accede por medio de un ndice, al igual
que se hace con los tipo de datos primitivos.
Ejemplo:
potreros[3].desplazar(9, 5);

for (i=0; i<15;i++)


contorno[i].desplazar(rand(),rand());

Programacin Orientada a Objetos en C++

Arreglos de objetos
Para crear un vector de objetos dinmico, primero se hace la
declaracin de tipo y se especfica el tamao, de la siguiente forma:
NombreClase ** nombreVector = new NombreClase * [tamao];

Luego, por cada posicin del vector se debe crear la referencia y


hacer la inicializacin correspondiente, llamando a un constructor.
for (i=0; i<nombreVector.length; i++)
nombreVector[i]= new NombreClase();

Ejemplo:

Casa ** misCasas = new Casa * [20];


for (i=0; i<20; i++) {
misCasas[i]= new Casa();
misCasas[i]->mostrarDatos();
}
delete [] misCasas;

Programacin Orientada a Objetos en C++

Mtodos setter
Mtodos que sirven para
asignar o establecer un
valor a un atributo.
Ejemplo:

Programacin Orientada a Objetos en C++

Mtodos getter
Mtodos que sirven para
obtener o recuperar un
valor que se ha asignado
a algn atributo.
Ejemplo:

S-ar putea să vă placă și