Thursday, January 28, 2010

Orientación a objetos

La orientación a objetos es una forma de hacer software. El concepto de Sistema de Programación Orientado al Objeto -Object Oriented Programming System (OOPS)-, y que comunmente se le llama OOP, agrupa un conjunto de técnicas que nos permiten desarrollar y mantener mucho más fácilmente programas de una gran complejidad.

En OOP, un objeto es un conjunto de datos (características o atributos) y métodos (los comportamientos que pueden realizar).

A los valores que tienen los atributos de un objeto se les conoce como estado del objeto, y a los atributos y métodos que ofrece se le conoce como la interface. Al código usado para construir las clases se les conoce como la implementación de la clase.

Una clase esta compuesta por características (atributos o propiedades) y por comportamientos (acciones o métodos).

En OOP existe otro concepto muy importante asociado al de clase, el de clase abstracta. Una clase abstracta es aquella que construimos para derivar de ella otras clases, pero de la que no se puede instanciar. Por ejemplo, la clase mamífero, no existe como tal en la naturaleza, no existe ningún ser que sea tan solo mamífero (no hay ninguna instanciación directa de esa clase), existen humanos, gatos, conejos, etc. Todos ellos son mamíferos, pero no existe un animal que sea solo mamífero.

Cualidades de la OOP.

* Herencia. Es la cualidad más importante de la OOP, ya que le permite reutilizar todo el código escrito para las superclases re-escribiendo solo aquellas diferencias que existan entre éstas y las subclases.
* Encapsulamiento. Un objeto es como una caja negra, a la que se le envía un mensaje y éste responde ejecutando el método apropiado, el cual producirá las acciones deseadas. un objeto, una vez programado es solo manipulable a través de mensajes. A este intrínseco vínculo entre datos y métodos y al modo de acceder y modificar sus datos es a lo que llamamos Encapsulación. Gracias a la encapsulación, una clase, cuando ha sido programada y probada hasta comprobar que no tiene fallos, podemos usarla sin miedo a que al programar otros objetos estos puedan interferir con los primeros produciendo efectos colaterales indeseables que arruinen nuestro trabajo; esto también nos permite depurar (eliminar errores de programación) con suma facilidad, ya que si un objeto falla, el error solo puede estar en esa clase, y no en ninguna otra. Si usted ha programado con técnicas tradicionales sabrá apreciar lo que esto vale.
* Polimorfismo. Es la cualidad que poseen los objetos para responder de distintomodo ante el mismo mensaje. Pongamos por ejemplo las clases hombre, vaca y perro, si a todos les damos la orden -enviamos el mensaje- Come, cada uno de ellos sabe cómo hacerlo y realizará este comportamiento a su modo. Veamos otro ejemplo algo más ilustrativo. Tomemos las clases barco, avión y coche, todas ellas derivadas de la clase padre vehículo; si les enviamos el mensaje Desplázate, cada una de ellas sabe cómo hacerlo. Realmente, y para ser exactos, los mensaje no se envían a las clases, sino a todos o algunos de los objetos instanciados de las clases. Por ejemplo, si tenemos en pantalla cinco recuadros (marcos) y tres textos, podemos decirle a tres de los recuadros y a dos de los textos que cambien de color y no decírselo a los demás objetos. Todos
estos sabrán cómo hacerlo porque hemos redefinido para cada uno de ellos su método Pintarse que bien podría estar en la clase padre Visual (conjunto de objetos que pueden visualizarse en pantalla). El polimorfismo nos facilita el trabajo, ya que gracias a él, el número de nombres de métodos que tenemos que recordar disminuye ostensiblemente.

Fuente:
Introducción a la OOP
Francisco Moreno
Grupo EIDOS, 1999-2000

No comments: