sábado, 14 de agosto de 2010

Un Mundo de Objetos

  La Programacion Orientada a objeto, nace de la necesidad de construir aplicaciones de mayor tamaño, en donde se pudiera reutilizar las rutinas existentes en aplicaciones ya probadas con lo cual los desarrolladores se ahorraran tiempo en la realizacion de los nuevos proyectos.

 La programacion estructurada comenzo a presentar una serie de inconvenientes los cuales hacian a los proyectos desarrollados fueran de una alta complejidad y de un gran tamaño, con lo cual los hacia dificiles de mantener. Los problemas presentados por la programacion clasica son:
  •  Modelo mental anomalo. Nuestra Imagen del mundo se apoya en los Seres a los que asignamos con nombres sustantivos, mientras que la programacion clasica se basa en el comportamiento, representado usualmente por Verbos
  • Resulta dificil modificar y extender los programas, puesto que suele haber datos compartidos con varios subprogramas
  • Los programas son dificiles de mantener. Suelen tener errores ocultos que no surgen hasta despues de muchas horas de funcionamiento
  • Es dificil reutilizar programas. Es dificil aprovechar en una aplicacion nueva subrutinas que se diseñaron para otra.
  • La Coordinacion y organizacion entre programadores para la creacion de aplicaciones de envergadura es compleja
  Como todos sabemos el mundo esta compuesto por objetos, estos pueden ser animados, inanimados, seres vivos o cosas. Para el ser humano es mas facil pensar de esta manera y en esto se basa la programacion orientada a objeto, por tal razon podemos definirla :
"  Es un metodo de implementacion  en el que los programas se organizan como colecciones cooperativas de objetos. Cada uno de los cuales representan una instancia de alguna clase, y cuyas clases son todas miembros de una jerarquia de clases unidas mediante relaciones de herencia. "Grady Booch".
  Las soluciones que aporta la programacion orientada a objeto a los problemas de la programacion tradicional son:
  •  Representacion Mucho más cercana a la realidad. Sistemas de software muy complejos se vuelven más simples de comprender.
  • En un sistema correctamente diseñado con OO es posible realizar cambios al nivel de las clases sin tener que realizar cambios en ningun otro punto del sistema, esto reduce el costo total de mantenimiento
  • La herencia y el Polimorfismo favorecen la reutilizacion de componentes individuales
  • Muchos problemas pueden ser detectados y corregidos en la fase de diseño reducciendo el trabajo de revision y mantenimiento del sistema 
La programacion orientada a objeto es el nuevo paradigma de programacion. Aunque esta comenzo con el lenguaje Simula67, creado en 1967 no fue hasta los años 90 que se populariso su uso con los sistemas operativos de ventanas y los lenguajes Visuales. De hecho la mayoria de los lenguajes que soportan la programacion orientad a objeto tiene como base lenguajes anteriores (Java-C, C++- C, C#-C, Visual Basic.Net - Basic, Delphi-Pascal, Etc), Por tal razon mas qu de creacion de lenguaje hablamos de evolucion de Lenguajes.