Programación orientada a objetos

La orientación a objetos es una de las técnicas más utilizadas en la actualidad en el mundo  del desarrollo: en el ámbito académico, como herramienta de aprendizaje y, en lo profesional, para solucionar toda clase de problemas.

LOS OBJETOS

Si miramos a nuestro alrededor, vemos que estamos rodeados de objetos. Y cuando debemos desarrollar un nuevo software para resolver un problema, verificamos que los elementos que componen el problema son objetos. Pensemos en un sistema de gestión de negocios. Al analizar las características del problema, nos encontramos con que tenemos objetos como productos, facturas, remitos, depósitos, clientes, etcétera. Y no sólo objetos concretos, sino también abstractos, como ser vencimientos o impuestos.

La programación orientada a objetos es un paradigma basado en la identificación de los objetos inherentes al problema y en la escritura de código que modele esos objetos, sus propiedades, sus comportamientos y la forma en la que se relacionan para resolver el problema. Visto de esta manera, la programación orientada a objetos resulta opuesta a la programación imperativa clásica, donde los programas son secuencias de instrucciones.

ORIGEN
Según algunos autores, el primer lenguaje en usar objetos fue Simula 67, creado en la década del 60 para hacer simulaciones. Cuenta la historia que en el Centro de Cómputo Noruego, en Oslo, trabajaban en simulaciones de barcos, y la cantidad de combinaciones de cualidades entre los diferentes barcos, y cómo unas afectaban a otras, produjo gran confusión en los científicos que estaban escribiendo los programas. Entonces, se les ocurrió organizar los diversos tipos de barcos en clases de objetos; cada clase sería responsable de definir y de administrar sus propios datos y su comportamiento.

Más tarde, el lenguaje Smalltalk fue el primero en introducir el término orientación a objetos para referirse al uso de objetos y de mensajes entre ellos como base del diseño y la programación de aplicaciones. Sin embargo, el auge de este paradigma comenzó en la década del 80, con el lenguaje C++. La tecnología de objetos fue agregada a muchos lenguajes ya existentes, pero este agregado artificial condujo a problemas de diseño y de compatibilidad que no hicieron más que ensuciar los len- guajes existentes. Por otro lado, los lenguajes orientados a objetos puros (como Smalltalk) no eran muy aceptados, porque carecían de características a las que estaban acostumbrados los programadores del momento. Se hicieron muchos intentos por crear lenguajes orientados a objetos, pero con algunas características imperativas y estructuradas; el único que sobrevivió fue el lenguaje Java. En la actualidad, los lenguajes de la plataforma .Net están diseñados de esta manera, es decir, se basan en la definición de clases y de objetos, pero conservan características de la programación imperativa.

 Smalltalk fue uno de los primeros lenguajes completamente orientados a objetos.

VENTAJAS DE LA POO
La programación orientada a objetos (POO) posee algunas ventajas frente a la programación estructurada clásica. La POO consiste en una evolución de la programación estructurada y cuenta con la experiencia adquirida a lo largo de años de desa- rrollo de software, lo que constituye su principal ventaja. Además, conduce a un modelo mental del problema mucho más cercano a la realidad, lo que favorece el análisis, la implementación y el posterior mantenimiento del software. Otra ventaja es que la POO permite lograr un mayor grado de encapsulado, ya que el comporta- miento y los datos propios de cada clase quedan contenidos en la definición de ella. Por último, mediante técnicas que estudiaremos luego, la POO permite reutilizar mucho código, favoreciendo la escritura de nuevos programas.