S5. Actividad 2. Análisis y abstracción de información

1.1 Antecedentes del tema

Una de las ideas fundamentales del paradigma de programación orientada a objetos es el concepto de objeto
como una entidad que engloba datos y funciones. En programación funcional el elemento principal que
determina el funcionamiento de un programa son las funciones. Las funciones transforman datos, los cuales
sólo tienen posibilidad de existir como valores que se pasan a una función o que son devueltos por ella.
Pero ahí termina su existencia.

No tienen vida fuera de las funciones. En programación imperativa, por otra parte, los datos se pueden considerar
los elementos fundamentales de un programa. Existen por sí mismos y son usados y modificados por las funciones.
La posibilidad de la programación imperativa de mantener y modificar un cierto estado (datos, valores de las variables)
la hace muy potente para representar y modelar procesos del mundo real que serían complicados de expresar en forma
de programación funcional. Las funciones son utilizadas para modificar el estado del programa. Sin embargo, es posible
un enfoque distinto que agrupe datos y funciones. Se trata del utilizado en el paradigma de Programación Orientada a
Objetos (POO). En este enfoque, el concepto fundamental es el de objeto. Un objeto es una entidad con un estado
(datos o variables de instancia) y unas funciones (métodos) que pueden acceder y modificar este estado.

Para evaluar las funciones hay que enviar un mensaje al objeto solicitando que se ejecute alguno de sus métodos.
Sólo es posible consultar el estado de un objeto mediante alguno de sus métodos. De esta forma, en POO se
refuerza la filosofía de la barrera de abstracción y de la ocultación de información. El enfoque de la POO permite
modelar un dominio (problema a programar, un simulador de deportes, por ejemplo) de una forma muy cercana a
la realidad. Los objetos del programa simulan los objetos (sustantivos) del dominio (por ejemplo, bicicleta, marchas,
carretera, etc.). Y los métodos de los objetos permiten modelar perfectamente las acciones (verbos, por ejemplo
cambiar de marcha, pedalear, etc.) que pueden realizar. Entre las características de la POO podemos indicar los
siguientes conceptos:

• Objetos (dinámicos/tiempo de ejecución) y clases (estáticas/tiempo de compilación).

• Los objetos agrupan datos (variables de instancia) y funciones (métodos), realizando de esa
forma una ocultación de la información.

• Los métodos de los objetos se invocan mediante mensajes.

• Dispatch dinámico: cuando una operación es invocada sobre un objeto, el propio objeto determina qué
código se ejecuta. Dos objetos con la misma interfaz pueden tener implementaciones distintas.

• Herencia: las clases se pueden definir utilizando otras clases como plantillas y modificando sus métodos
y/o variables de instancia.


2.2 Bases Teóricas.

La programación orientada a objetos “Poo” es un paradigma de programación más orientado a cómo vemos
las cosas en la vida real que otros tipos de programación. Este tipo de programación permite solventar
algunos de los problemas que ha tenido el desarrollo del software desde sus comienzos, como por ejemplo
la falta de potabilidad y baja reusabilidad del código, junto con la dificultad en la modificación y desarrollo
del mismo. Además es una técnica de codificación bastante más intuitiva que el resto.
La programación orientada a objetos tiene tres propiedades básicas: Debe estar basado en objetos, estar basado
en clases y debe de ser capaz de mantener una herencia entre clases. La mayoría de los lenguajes cumplen una
o dos de estas propiedades pero pocos logran cumplir las tres. En particular, la herencia. Aprender esta técnica
no es complicado, pero es una manera subjetiva de programar que depende del desarrollador. Aunque podemos
dar diferentes soluciones a un mismo problema, no todas ellas son válidas. La dificultad no radica en aprender
esta técnica, si no en ejecutarla bien. Solo programando bien podemos aprovechar todas las ventajas que nos
ofrece la programación orientada a objetos.
Se dieron cuenta de que las cualidades de las naves con las que estaban simulando podía afectar  unas a otras. Su idea fue la de agrupar diversos tipos de naves en diversas clases de objetos. Los objetos se agrupan en clases y estas definen sus propios datos y operaciones. Esta idea fue pulida posteriormente en Smalltak, desarrollado en Simula en Xerox PARC.

Comentarios

Entradas populares de este blog