Programacion Orientada A Objetos En C++
Enviado por roansaga • 5 de Marzo de 2013 • 6.550 Palabras (27 Páginas) • 354 Visitas
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++
1
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.
Programación orientada a objetos con C++
2
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
Programación orientada a objetos con C++
3
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.
Programación orientada a objetos con C++
4
class Celdilla
{
char Caracter, Atributo; //Miembros privados
public:
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
...