Programación orientada a objetos
La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que
usa los objetos en
sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento. Su uso se popularizó a principios de la década
de los años 1990. En la actualidad, existe una gran variedad de lenguajes de
programación que soportan la orientación a objeto.
Introducción
Los objetos son entidades que tienen un
determinado estado, comportamiento (método) e identidad:
·
El estado está compuesto de datos o
informaciones; serán uno o varios atributos a los que se habrán asignado unos
valores concretos (datos).
·
El comportamiento está definido por los métodos o mensajes a los que sabe responder
dicho objeto, es decir, qué operaciones se pueden realizar con él.
·
La identidad es una propiedad de un objeto que lo
diferencia del resto; dicho con otras palabras, es su identificador (concepto
análogo al de identificador de una variable o una constante).
Un objeto contiene toda la información
que permite definirlo e identificarlo frente a otros objetos pertenecientes a
otras clases e incluso frente a objetos de una misma clase, al poder tener
valores bien diferenciados en sus atributos. A su vez, los objetos disponen de
mecanismos de interacción llamados métodos,
que favorecen la comunicación entre ellos. Esta comunicación favorece a su vez
el cambio de estado en los propios objetos. Esta característica lleva a
tratarlos como unidades indivisibles, en las que no se separa el estado y el
comportamiento.
Los métodos
(comportamiento) y atributos (estado) están estrechamente relacionados por
la propiedad de conjunto. Esta propiedad destaca que una clase requiere de
métodos para poder tratar los atributos con los que cuenta. El programador debe
pensar indistintamente en ambos conceptos, sin separar ni darle mayor
importancia a alguno de ellos. Hacerlo podría producir el hábito erróneo de
crear clases contenedoras de información por un lado y clases con métodos que
manejen a las primeras por el otro. De esta manera se estaría realizando una programación estructurada camuflada en un lenguaje de programación
orientado a objetos.
La POO difiere de la programación estructurada tradicional, en la que los datos y los
procedimientos están separados y sin relación, ya que lo único que se busca es
el procesamiento de unos datos de entrada para obtener otros de salida. La
programación estructurada anima al programador a pensar sobre todo en términos
de procedimientos o funciones, y en segundo lugar en las estructuras de datos
que esos procedimientos manejan. En la programación estructurada solo se
escriben funciones que procesan datos. Los programadores que emplean
programación orientada a objetos, en cambio, primero definen objetos para luego
enviarles mensajes solicitándoles que realicen sus métodos por sí mismos.
Origen
Los conceptos de la programación
orientada a objetos tienen origen en Simula 67,
un lenguaje diseñado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard, del Centro de Cómputo Noruego en Oslo.
En este centro se trabajaba en simulaciones de naves, que fueron confundidas
por la explosión combinatoria de cómo las diversas cualidades de diferentes
naves podían afectar unas a las otras. La idea surgió al agrupar los diversos
tipos de naves en diversas clases de objetos, siendo responsable cada clase de
objetos de definir sus propios datos y comportamientos. Fueron
refinados más tarde en Smalltalk, desarrollado en Simula en Xerox PARC (cuya
primera versión fue escrita sobre Basic)
pero diseñado para ser un sistema completamente dinámico en el cual los objetos
se podrían crear y modificar "sobre la marcha" (en tiempo de
ejecución) en lugar de tener un sistema basado en programas estáticos.
La programación orientada a objetos se
fue convirtiendo en el estilo de programación dominante a mediados de los años
ochenta, en gran parte debido a la influencia de C++,
una extensión del lenguaje de programación C.
Su dominación fue consolidada gracias al auge de las Interfaces gráficas de usuario,
para las cuales la programación orientada a objetos está particularmente bien
adaptada. En este caso, se habla también de programación dirigida por
eventos.
Las características de orientación a
objetos fueron agregadas a muchos lenguajes existentes durante ese tiempo,
incluyendo Ada, BASIC, Lisp más Pascal entre otros.
La adición de estas características a los lenguajes que no fueron diseñados
inicialmente para ellas condujo a menudo a problemas de compatibilidad y en la
capacidad de mantenimiento del código. Los lenguajes orientados a objetos
"puros", por su parte, carecían de las características de las cuales
muchos programadores habían venido a depender. Para saltar este obstáculo, se
hicieron muchas tentativas para crear nuevos lenguajes basados en métodos
orientados a objetos, pero permitiendo algunas características imperativas de
maneras "seguras". El Eiffel de Bertrand Meyer fue un temprano y
moderadamente acertado lenguaje con esos objetivos, pero ahora ha sido
esencialmente reemplazado por Java, en gran parte
debido a la aparición de Internet y a la
implementación de la máquina virtual de Java en la mayoría de navegadores. PHPen
su versión 5 se ha modificado; soporta una orientación completa a objetos,
cumpliendo todas las características propias de la orientación a objetos.
fuentes:
No hay comentarios.:
Publicar un comentario