Saltar a contenido

POO

La construcción de software es un proceso cuyo objetivo es dar solución a problemas utilizando una herramienta informática y tiene como resultado la construcción de un programa informático. Como en cualquier otra disciplina en la que se obtenga un producto final de cierta complejidad, si queremos obtener un producto de calidad, es preciso realizar un proceso previo de análisis y especificación del proceso que vamos a seguir, y de los resultados que pretendemos conseguir.

El enfoque estructurado

En un principio se tomaba el problema de partida y se iba sometiendo a un proceso de división en subproblemas más pequeños reiteradas veces, hasta que se llegaba a problemas elementales que se podía resolver utilizando una función. Luego las funciones se hilaban y entretejían hasta formar una solución global al problema de partida.

Era un proceso centrado en los procedimientos: se codificaban mediante funciones que actuaban sobre estructuras de datos. Por eso a este tipo de programación se le llama programación estructurada. Sigue una filosofía en la que se intenta aproximar qué hay que hacer, para así resolver un problema.

Enfoque orientado a objetos

La orientación a objetos ha roto con esta forma de hacer las cosas. Con este nuevo paradigma el proceso se centra en simular los elementos de la realidad asociada al problema de la forma más cercana posible.

La abstracción que permite representar estos elementos se denomina objeto, y tiene las siguientes características:

  • Está formado por un conjunto de atributos, que son los datos que le caracterizan.
  • Un conjunto de operaciones que definen su comportamiento.
  • Las operaciones asociadas a un objeto actúan sobre sus atributos para modificar su estado.
  • Cuando se indica a un objeto que ejecute una operación determinada se dice que se le pasa un mensaje.

Las aplicaciones orientadas a objetos están formadas por un conjunto de objetos que interaccionan enviándose mensajes para producir resultados. Los objetos similares se abstraen en clases; se dice que un objeto es una instancia de una clase.

Cuando se ejecuta un programa orientado a objetos ocurren tres sucesos:

  1. Primero, los objetos se crean a medida que se necesitan.
  2. Segundo, los mensajes se mueven de un objeto a otro (o del usuario a un objeto) a medida que el programa procesa información o responde a la entrada del usuario.
  3. Tercero, cuando los objetos ya no se necesitan, se borran y se libera la memoria.

Conceptos base

La orientación a objetos trata de acercarse al contexto del problema lo más posible por medio de la simulación de los elementos que intervienen en su resolución y basa su desarrollo en los siguientes conceptos:

  • Abstracción: permite capturar las características y comportamientos similares de un conjunto de objetos con el objetivo de darles una descripción formal. Es clave en el análisis y diseño orientado a objetos para llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar.
  • Encapsulación: reunir todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Aumenta la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.
  • Modularidad: propiedad que permite subdividir una aplicación en partes más pequeñas (módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes. En orientación a objetos es consustancial, ya que los objetos se pueden considerar los módulos más básicos del sistema.
  • Principio de ocultación: aísla las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas. Reduce la propagación de efectos colaterales cuando se producen cambios.
  • Polimorfismo: reunir bajo el mismo nombre comportamientos diferentes. La selección de uno u otro depende del objeto que lo ejecute.
  • Herencia: relación que se establece entre objetos en los que unos utilizan las propiedades y comportamientos de otros formando una jerarquía. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen.
  • Recolección de basura: técnica por la cual el entorno de objetos se encarga de destruir automáticamente los objetos (y, por tanto, desvincular su memoria asociada) que hayan quedado sin ninguna referencia a ellos.

Ventajas del paradigma orientado a objetos

  1. Permite desarrollar software en mucho menos tiempo, con menos coste y de mayor calidad gracias a la reutilización: al ser completamente modular facilita la creación de código reusable dando la posibilidad de reutilizar parte del código para el desarrollo de una aplicación similar.
  2. Se consigue aumentar la calidad de los sistemas, haciéndolos más extensibles, ya que es muy sencillo aumentar o modificar la funcionalidad de la aplicación modificando las operaciones.
  3. El software orientado a objetos es más fácil de modificar y mantener porque se basa en criterios de modularidad y encapsulación: el sistema se descompone en objetos con responsabilidades claramente especificadas e independientes del resto.
  4. La tecnología de objetos facilita la adaptación al entorno y el cambio haciendo aplicaciones escalables. Es sencillo modificar la estructura y el comportamiento de los objetos sin tener que cambiar la aplicación.