gravatar

Conceptos básicos de la POO - Parte 5



Agregación

Anteriormente se mencionó a la agregación como un proceso de abstracción que nos permite componer o descomponer (des-agregar) conceptos en nuestra mente para representar la realidad que es necesario modelar. Los lenguajes orientados a objetos le dan soporte a este proceso para que de la misma manera sea posible construir objetos computacionales, es decir, los objetos que en nuestra aplicación representarán a los entes u objetos del dominio del problema.

En realidad, no existe un "mecanismo particular" para soportar la agregación ya que lo único necesario es que los objetos puedan contener variables de referencia.

La explicación continúa sobre la base de un tipo particular de agregación: la composición. La idea subyacente es muy simple. Identificamos la existencia de un objeto en el dominio del problema, que está compuesto de otros objetos, cada uno de los cuales "es una parte" de ese objeto. Para implementar ese hecho en nuestra aplicación se deberá definir una categoría de objetos (una clase) que tendrá un atributo de instancia (variable de instancia) por cada "objeto parte".

Por ejemplo, si la aplicación fuera una enciclopedia multimedia del cuerpo humano, podríamos haber identificado un objeto "cuerpo humano" compuesto de las partes: cabeza, cuello, pecho, abdomen, brazos, piernas. Siendo así, deberíamos definir una clase "CuerpoHumano" que contenga un atributo por cada parte, excepto que debería tener dos atributos "brazo" y dos atributos "pierna". Cada parte sería también una categoría de objetos, por lo que los atributos anteriores son variables de referencia.

Al crear cada objeto "CuerpoHumano" éste deberá crear cada objeto "parte", es decir, un objeto cabeza, un objeto cuello, un objeto pecho, un objeto abdomen, dos objetos brazos y dos objetos piernas.

Si está pensando que para este ejemplo deberían crearse más objetos "parte" u otros diferentes, probablemente tenga razón, todo depende del propósito de la aplicación. No obstante, no se detenga en este detalle de modo que pueda captar el concepto general.

En gambas, un primer bosquejo de la clase CuerpoHumano podría quedar así:


'Clase CuerpoHumano PRIVATE cabeza AS Cabeza PRIVATE cuello AS Cuello PRIVATE pecho AS Pecho PRIVATE abdomen AS Abdomen PRIVATE brazoizquierdo AS Brazo PRIVATE brazoderecho AS Brazo PRIVATE piernaizquierda AS Pierna PRIVATE piernaderecha AS Pierna PUBLIC SUB _new() cabeza = new Cabeza() cuello = new Cuello() pecho = new Pecho() abdomen = new Abdomen() brazoizquierdo = new Brazo() brazoderecho = new Brazo() piernaizquierda = new Pierna() piernaderecha = new Pierna() END

Las variables de instancia de un objeto que pueden guardar referencias a otros objetos constituyen el "mecanismo" mediante el cual es posible implementar la agregación.

Recuerde que una clase es una fábrica de objetos y que la implementación de la agregación se logra a través de las variables de referencia. En consecuencia, una conclusión válida sería que la agregación es una forma de crear objetos complejos. Así un objeto puede delegar parte de su trabajo a otros.

Un poco más adelante se retomarán estos conceptos para ejemplificarlos con mayor amplitud y profundizarlos.


Los comentarios están habilitados para que los lectores puedan participar en la corrección del libro, realizar preguntas puntuales o sugerencias. Todo comentario fuera de estos objetivos será eliminado. Por favor, tenga en cuenta lo siguiente:

- Cumpla las normas de etiqueta.

- Realice críticas constructivas.

- No sea redundante.