lunes, 10 de septiembre de 2007

Programacion Orientada a Objetos

La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación. Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas.

La Programación Orientada a Objetos desde el punto de vista computacional "es un método de implementación en el cuál los programas son organizados como grupos cooperativos de objetos, cada uno de los cuales representa una instancia de alguna clase, y estas clases, todas son miembros de una jerarquía de clases unidas vía relaciones de herencia" [Greiff 1994].

Fundamentos de lo Orientado a Objetos

El paradigma OO se basa en el concepto de objeto.
Un objeto es aquello que tiene:
1.- Estado (propiedades más valores)
2.- Comportamiento (acciones y reacciones a mensajes)
3.- Identidad (propiedad que lo distingue de los demás objetos).

La estructura y comportamiento de objetos similares están definidos en su clase común; los términos instancia y objeto son intercambiables.

Una clase es un conjunto de objetos que comparten una estructura y comportamiento común. La diferencia entre estos dos es que un objeto es una entidad concreta que existe en tiempo y espacio, mientras que una clase representa una abstracción, la "esencia" de un objeto, tal como son. De aquí que un objeto no es una clase, sin embargo, una clase puede ser un objeto.
En el enfoque OO las propiedades del objeto son claves, como son: abstracción, encapsulación, modularidad y jerarquía, fundamentalmente, y en menor grado tipificación (typing), concurrencia, persistencia. [Booch 1986] dice que “si un modelo que se dice OO no contiene alguno de los primeros cuatro elementos, entonces no es OO”.

Abstracción. Se refiere a quitar las propiedades y acciones de un objeto y dejar solamente aquellas que sean importantes de acuerdo a lo que se requiere.
Encapsulación. Ocultan la funcionalidad interna de sus operaciones, de otros objetos.
Modularidad. Es la propiedad de un sistema que ha sido descompuesto en un conjunto de módulos coherentes e independientes.
Jerarquía o herencia. Es el orden de las abstracciones organizado por niveles, son las características que un objeto hereda de una clase o una clase de otra clase.
Polimorfismo. Una operación puede tener el mismo nombre en diversas clases, y funcionar distinto en cada una.
Envío de mensajes. Un objeto envía una petición o mensaje para realizar una operación y el objeto receptor ejecuta la operación.
Asociaciones. Los objetos se relacionan entre sí de alguna forma.
Agregación. Cuando un objeto se conforma de una combinación de diversos tipos de objetos.
Composición. Es un tipo de agregación que trae en conjunto una relación entre un objeto agregado y sus objetos componentes.

Según [Booch 1986], los beneficios del enfoque OO son tres:

1.- El uso del modelo OO nos ayuda a explotar el poder expresivo de todos los lenguajes de programación basados en objetos y los orientados a objetos, como Smalltalk, Object Pascal, C++, CLOS, Ada, y Java.
2.- El uso del modelo OO alienta el uso no solo del software, sino de diseños completos.
3.- Produce sistemas que están construidos en formas intermedias estables y por ello son más resistentes al cambio en especificaciones y tecnología. El mismo autor considera que el principal beneficio del OOD es que da un mecanismo para formalizar el modelo de la realidad.

No hay comentarios: