Posterior

1. ¿Qué es la programación orientada a objetos?

  Curso: Introducción a C++, por Nacho Cabanes (antiguo)

1. ¿Qué es la programación orientada a objetos?

El lenguaje C++ es un lenguaje creado con la base del lenguaje C, pero ampliado para permitir Programación Orientada a Objetos (también hay alguna otra diferencia, que ya iremos viendo).

Por eso, vamos a empezar viendo las generalidades de la Programación Orientada a Objetos y después iremos particularizando para el caso de C++...

Hasta ahora estamos estado "cuadriculando" todo para obtener algoritmos: tratábamos de convertir cualquier cosa en funciones y variables que pudieramos emplear en nuestros programas.

Pero no todo lo que nos rodea es tan fácil de cuadricular. Supongamos por ejemplo que tenemos que describir una puerta desde nuestro programa. En la zona de declaración de variables detallaríamos datos como su tamaño o su color. Pero no basta con eso. De hecho, eso no es lo más importante: lo que hace que una puerta sea una puerta es el hecho de que se pueda abrir y se pueda cerrar. Por tanto, si queremos simular ocontrolar una puerta desde nuestro programa, deberíamos crear también las funciones AbrirPuerta y CerrarPuerta en alguna otra parte de nuestro fuente.

No está mal, pero es antinatural: una puerta es unconjunto: no podemos separar su color de su tamaño, o de la forma en que debemos abrirla o cerrarla. Sus características son tanto las físicas (lo que hasta ahora llamábamos variables) como sus comportamientos en distintas circunstancias (lo que para nosotros eran las funciones). Todo ello va siempre unido, formando un OBJETO.

Por otra parte, si tenemos que explicar a alguien lo que es el portón de un garaje, y ese alguien no lo ha visto nunca, pero conoce cómo es la puerta de su casa, le podemos decir "se parece a una puerta de una casa,pero es más grande para que quepan los coches, está hecha de metal en vez de madera...". Las dos cosas son puertas: se trata de dos objetos que pertenecen a la misma CLASE.

Finalmente, conviene recordar que "abrir" no se refiere sólo a una puerta. También podemos hablar de abrir una ventana o unlibro, por ejemplo.

Pues con esta discusión hemos comentado casi sin saberlolas tres características más importantes de la Programación Orientada a Objetos(OOP):
  • ENCAPSULACION: No podemos separar loscomportamientos de las características de un objeto. Los comportamientos del objeto serán funciones, que en OOP llamaremos MÉTODOS. Las características del objeto serán variables, como las que hemos usado siempre, que en OOP llamaremos ATRIBUTOS. La apariencia de un objeto en C++, como veremos un poco más adelante, recordará a un registro o "struct", que contendrá funciones además de datos.
  • HERENCIA: Unos objetos pueden "heredar" métodos y atributos de otros. Esto hace más fácil definir objetos nuevos a partir de otros que ya teníamos anteriormente (como ocurría con el portón y la puerta)y facilitará la reutilización de los programas, pudiendo aprovechar buena parte de los anteriores... si están bien diseñados.
  • POLIMORFISMO: Un mismo nombre de un método puede hacer referencia a comportamientos relativamente distintos (como abrir una puerta o abrir un libro). En C++ el polimorfismo llega incluso al nivel de los operadores: podremos "redefinir" el operador + para que sume matrices,ficheros o cualquier tipo de objeto que nos interese [1] .

(Nota: en C++ es frecuente llamar también "variables de instancia" o "variables miembro" a los atributos, y "funciones miembro" a los métodos).


Comentado esto, vamos a empezar a ver ejemplos en C++ para tratar de fijar estos primeros conceptos y de ver la sintaxis de este lenguaje. A partir de unos primeros ejemplos sencillos, iremos profundizando paulatinamente.



[1] Realmente, este tipo de polimorfismo recibe el nombre de "sobrecarga de operadores", como ya veremos.

Actualizado el: 28-04-2006 17:39

Posterior