UpperSoft

developing the future

 

Hace años se habla de programación orientada a objetos, pero realmente mucha gente aún hoy, no tiene una clara noción de lo que esto significa
 
La noción de objetos aparece por primera vez en la década del ’60, cuando un grupo de científicos comenzó a pensar un modelo totalmente diferente a los existentes hasta entonces y que podía ser útil en el área de simulación. La idea fue diseñar un lenguaje que permita directamente describir los objetos que serían simulados. Estos conceptos fueron volcados en el lenguaje Simula, considerado como el primer lenguaje orientado a objetos. Luego descubrieron que el concepto de objetos podía ser aplicado en algo más que en simulación.
 
UntitledSimula ha influenciado en el diseño de muchos otros lenguajes orientados a objetos. El primero de ellos fue Smalltalk, que surge en los años ’70. Luego, más adelante, en la década de los ’80 aparecen muchos otros lenguajes orientados a objetos: C++, Eiffel, Objective C, Object Pascal, Modula-3, Ada95, Java, etc. Con el boom de los objetos, ya avanzada la década de los ’80, aparecen técnicas de análisis y diseño orientadas a objetos en el área de ingeniería de software que actualmente son de gran uso en aplicaciones comerciales e industriales.
 
Peter Wegner, en 1987 realizó una categorización de los lenguajes según éstos posean: objetos, clases, herencia, abstracción, tipificación, concurrencia.
 
Parte de dicha clasificación es la siguiente:
 
Lenguajes basados en objetos: lenguajes que soportan objetos como característica propia del lenguaje. Los objetos sirven para agrupar operaciones y datos y facilitan el diseño de programas orientados a datos.
Lenguajes basados en clases: lenguajes en los cuales cada objeto pertenece a una clase pero sin un mecanismo para la organización de clases. Las clases sirven para manejar colecciones de objetos, permitiendo ver a los mismos como valores de una clase dentro del lenguaje. De esta forma, los objetos pueden ser pasados como parámetros, asignarlos como valores a variables y organizarlos en estructuras.
Lenguajes orientados a objetos: lenguajes en los cuales cada objeto pertenece a una clase y donde es posible la definición incremental de jerarquías de clase a través de un mecanismo de herencia. La herencia es utilizada como una forma para compartir recursos y permite describir los dominios de las aplicaciones.
 
Cabe aclarar que cada una de estas categorías está incluída en la anterior. Es decir, si un lenguaje es orientado a objetos, entonces también es basado en clases y es basado en objetos. Un lenguaje basado en clases, es también basado en objetos pero no es orientado a objetos.
 
En programación orientada a objetos, un programa es una colección de objetos que trabajan y cooperan entre sí enviándose mensajes. El principal objetivo es solucionar la complejidad existente en los problemas del mundo real mediante la abstracción y el encapsulamiento del conocimiento en objetos. La orientación a objetos descompone el sistema en objetos como componentes básicos del diseño.
 
Una vez determinados los objetos que el sistema va a utilizar necesitamos algún mecanismo para describirlos. Queremos que dicha descripción sea completa, precisa, flexible y sin ambigüedad. Para lograrlo, debemos independizarnos de las estructuras de datos, pues nada nos garantiza que un tipo de representación no pueda cambiarse durante la evolución del sistema. Describir los objetos utilizando su representación física nos conduce a la sobre-especificación.clip_image005
 
Encontramos la solución a este problema en la teoría de los tipos de datos abstractos. Un tipo de dato abstracto describe una estructura de dato no por su implementación sino por una lista de servicios disponible y por las propiedades que cumplen dichos servicios.
 
Un objeto es una entidad (una instancia de un tipo de dato abstracto) que tiene estado interno (propiedades) y comportamiento (lista de servicios). El hecho que tenga estado interno significa que posee propiedades o atributos que no son accesibles a otros objetos, es decir es un conjunto de características privadas del objeto. Por otro lado, el comportamiento está dado por el conjunto de mensajes a los cuales el objeto es capaz de responder.
 
Thursday, January 21, 2010 4:45:00 PM Categories: Programación Tecnología