PDF de programación - Programación orientada a objetos con C++

Imágen de pdf Programación orientada a objetos con C++

Programación orientada a objetos con C++gráfica de visualizaciones

Publicado el 8 de Junio del 2018
917 visualizaciones desde el 8 de Junio del 2018
81,3 KB
31 paginas
Creado hace 25a (19/04/1999)
PROGRAMACIÓN ORIENTADA A

OBJETOS CON C++

¡o cómo aprender C++ en 1 hora!

sin que se note que realmente está escribiendo en C

Enrique Alba Torres
Andrés Rubio del Río

Programación orientada a objetos con C++

PROGRAMACIÓN ORIENTADA A

OBJETOS (POO) CON C++

1. TÉRMINOS Y CONCEPTOS DE POO

El esquema tradicional de un programa, independientemente del lenguaje que se utilice, está

compuesto por una secuencia de sentencias, más o menos agrupadas en rutinas o funciones, que van

operando sobre una información contenida en campos o variables. El problema de esta estructura estriba

en que ni las sentencias tienen un control de las variables con las que trabajan, ni estas variables están

relacionadas en forma alguna con las sentencias que habrán de tratarlas. ¿Cómo puede la POO ayudarnos?
1.1. ¿Qué Significa POO?

La filosofía de la POO (Object Oriented Programming, Programación

Orientada a Objetos) rompe con este esquema, dando lugar a una nueva idea, el objeto.

El objeto es una abstracción en la que se unen sentencias y datos, de tal forma que a un

objeto sólo lo van a poder tratar los métodos definidos para él, y estos métodos están

preparados para trabajar específicamente con él. Este grado de compenetración evita que

un método pueda tratar datos no apropiados, o bien que unos datos puedan ser tratados

por un método no adecuado, ya que la llamada a cualquier método ha de ir siempre

precedida del objeto sobre el que se quiere actuar, y éste sabe si ese método se ha

definido o no para él. C++ es un lenguaje que contiene estos y otros conceptos de POO.

En terminología POO, cuando se quiere ejecutar un método (función) sobre un

objeto, se utiliza un mensaje que se envía al objeto, de tal forma que el objeto llame al

método y éste sepa qué objeto lo ha llamado.
1.2. Encapsulación

Este concepto permite tener un control de acceso selectivo tanto a los miembros

como a los métodos, de tal forma que desde fuera del objeto sólo se pueda acceder a los

métodos e identificadores que permita el creador del objeto.
1.3. Herencia

Permite la reutilización y la extensión del código. Permite diseñar nuevas clases

a partir de otras ya existentes, pudiendose además extender sus métodos (cambiar su

semántica en la clase que hereda).

Ej. Pilas y Colas.

1

Programación orientada a objetos con C++

1.4. Polimorfismo

Permite tratar de forma genérica objetos de distintas clases, ahorrando así código

y proporcionando simplicidad. Por tanto, trata de forma genérica objetos de distintos

tipos derivados de una misma clase de objetos.
1.5. Constructores y Destructores

Un constructor es un método que se ejecuta automáticamente cuando se define o

se crea un objeto, y su función es inicializar el objeto y prepararlo para realizar las

operaciones necesarias.

Un destructor es un método que se ejecuta automáticamente cuando un objeto

queda fuera del ámbito en el que se creó, y su función es destruir el objeto, liberando

cualquier asignación dinámica de memoria que se haga.

El objeto puede tener o no definidos explícitamente el constructor y el

destructor, o tener varios constructores.

2. POO CON C++

2.1. Clases

Una clase es una definición de operaciones que se define una vez en algún punto

del programa, pero normalmente se define en un archivo cabecera, asignándole un

nombre que se podrá utilizar más tarde para definir objetos de dicha clase. Las clases se

crean usando la palabra clave class, y su sintaxis es la siguiente:

class Nombre_de_la_Clase

{

};

Definición_de_Datos;

Prototipos_y_métodos;

Nota: Muy importante no olvidar el punto y coma final.

Cuando deseemos crear un objeto de una clase definida lo que haremos será lo

siguiente:

Nombre de la Clase Nombre del Objeto;

Punto p1,p2; // Creación de dos objetos

// de la clase Punto

2

Programación orientada a objetos con C++

También se pueden definir apuntadores a objetos de la siguiente forma:

Nombre de la Clase *Nombre del Objeto;

Punto p1,p2; // Creación de dos objetos

// de la clase Punto

Se puede acceder a los datos y métodos de una clase de la misma forma que se

accede a un campo de una estructura, es decir, con . o con ->, seguido del nombre del

elemento a usar.

2.2. Miembros Públicos, Protegidos y Privados

Un miembro público es accesible en cualquier lugar en el que exista un objeto de

la clase.

Un miembro protegido sólo es accesible desde las clases que se hereden de la

clase que lo contiene.

Un miembro privado sólo es accesible por los métodos de la clase a la que

pertenece.

También se puede crear una clase usando la palabra clave struct, la diferencia

es que con struct los miembros se hacen públicos por defecto, mientras que con

class se hacen privados por defecto.

Para hacer un miembro público, privado o protegido usamos respectivamente:

public, private o protected

2.3. Definición de una Clase

El cuerpo de un método, puede o bien incluirse en la definición de una clase, en

cuyo caso lo llamaremos método inline, o bien en un archivo fuera de la clase.

Para que C++ sepa cuándo una función es simplemente una función, y cuándo es

un método, en éste último caso siempre debemos poner al método como prefijo el

nombre de la clase a la que pertenece seguido de :: (operador de ámbito).

Ej. Ver figuras 1 y 2.

3

class Celdilla
{

public:

Programación orientada a objetos con C++

char Caracter, Atributo; //Miembros privados

void FijaCeldilla(char C, char A)
{

Caracter=C; Atributo=A;

}
void ObtenCeldilla(char &C, char &A)
{

C=Caracter; A=Atributo;

}
//&C es una referencia a la variable C

};

Figura 1. Ejemplo de la definición de una clase con métodos definidos dentro de la clase.

Esto mismo se podría haber hecho como se muestra en la figura 2.

2.4. Métodos Inline

En la definición de la clase anterior pueden verse dos variantes, en la primera los

métodos se definen dentro de la misma clase, mientras que en la segunda sólo se incluye

en la clase un prototipo de los métodos, su implementación está fuera. Los métodos

cuya definición se incluye en la clase se denominan Métodos inline.

En el caso de emplear métodos inline, vamos a tener como beneficio que la

ejecución va a ser más rápida, pero sin embargo, el código objeto que genera el

compilador va a ser mayor.

En algunos compiladores puede que no suceda esto, pero normalmente suele

ocurrir. Así, a la conclución a la que podemos llegar es que, para métodos pequeños, el

método Inline si es óptimo, pero en caso contrario no lo será.

class Celdilla
{

public:

char Caracter, Atributo;

void FijaCeldilla(char C, char A);
void ObtenCeldilla(char &C, char &A);

};
void Celdilla::FijaCeldilla(char C, char A)
{

Caracter=C;Atributo=A;

}
void Celdilla::ObtenCeldilla(char &C, char &A)
{

C=Caracter;A=Atributo;

}

Figura 2. Ejemplo de la definición de una clase con métodos no Inline.

4

Programación orientada a objetos con C++

2.5. Entrada y Salida Básica

2.5.1. cin y cout

cin y cout son dos flujos (entrada y salida) de datos pertenecientes a la

biblioteca de C++ llamada iostream, y se utilizan para lo siguiente:

cin>>dato : Almacena el carácter introducido por teclado en dato.

cout<<dato : Lee el contenido de dato y lo muestra por pantalla.

3. SOBRECARGA

Consiste en la redefinición de un método. Por tanto, un método sobrecargado es

un método que consta de varias definiciones distintas, aunque todas ellas llamadas de

igual forma. Lo que va a permitir distinguir un método de otro que se llame de igual

forma van a ser el tipo y el número de parámetros que recibe.

#include <iostream.h>
class Celdilla
{

char Caracter, Atributo;

public:

void FijaCeldilla(char C, char A)
{

Caracter=C;
Atributo=A;

}
void FijaCeldilla(unsigned CA)
{

Caracter=CA & 0xff;
Atributo=CA >> 8;

}
void ObtenCeldilla(char &C, char &A)
{

C=Caracter;
A=Atributo;

}
unsigned ObtenCeldilla()
{

return Atributo<<8 | Caracter;

}

};
void main()
{ Celdilla X, Y;
unsigned Casilla;
char C, A;

X.FijaCeldilla(‘A’,112); // Fija los valores del objeto X
Casilla = X.ObtenCeldilla(); //Obtiene el valor de X en forma

Y.FijaCeldilla(Casilla); //Toma Y en dos caracteres
cout << “Caracter= “ << C << “, Atributo= “ << (int) A;
}



// de un entero

Figura 3. Ejemplo de sobrecarga de métodos de una clase.

5

Programación orientada a objetos con C++

4. CONSTRUCTORES Y DESTRUCTORES

Cada vez que se define una variable de un tipo básico, el programa ejecuta un

procedimiento que se encarga de asignar la memoria necesaria, y si es necesario,

también realizará las inicializaciones pertinentes.

De forma complementaria cuando una variable queda fuera de ámbito se llama a

un procedimiento que libera el espacio que estaba ocupando dicha variable.

El método al que se llama cuando creamos una variable es el constructor, y al

que se llama cuando se destruye una variable es el destructor.

Una clase puede tener uno o varios constructores, pero un sólo destructor. El

constructor debe tener el mismo nombre que la clase a la que pertenece, mientras que el
destructor también debe llamarse de igual forma pero precedido por el carácter ~

.

Estos métodos no van a tener parámetros de salida, ni siquiera puede usarse void.

Sin embargo, el constructor sí podría tomar parámetros de entrada, cosa que no puede

hacer el destructor.

#include <string.h>
class Cadena
{

char *pc;
unsigned longitud;

public:

Cadena( char * Str);
~ Cadena() { delete pc; }

Cadena Operator+(Cadena c);
int Operator==(Cadena c)
{

return ! strcmp(pc, c.pc);

}
unsigned strlen()
{

return longitud;

}

};
Cadena::Cadena(char * Str)
{

long
  • Links de descarga
http://lwp-l.com/pdf11698

Comentarios de: Programación orientada a objetos con C++ (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad