3 de marzo de 2005

Dos formas de agregar un objeto a otro

Hay dos formas de agregar un objeto a otro: usando AddObject / NewObject o como propiedad...

Los métodos AddObject y NewObject de los objetos son para agregar nuevos objetos (y sólo objetos) a objetos existentes.

En cambio las asignaciones con "=" o con AddProperty se realizan como asignaciones de propiedades, aunque las mismas puedan contener objetos.

No sé si hay un motivo teórico para esta distinción entre agregar como objeto o como propiedad, pero hay varios motivos prácticos, cada uno con sus pros y contras:

AGREGAR UN OBJETO A OTRO OBJETO

usando AddObject o NewObject
  • Ventajas:
  • - Permite que el objeto interior (contenido) pueda referirse al objeto exterior (padre) usando la sintaxis THIS.PARENT - Permite a varios objetos setear u obtener datos entre sí en cualquier dirección (hijo a padre, padre a hijo, hijo a hermano, etc.) - Los objetos agregados forma parte de una colección dentro del padre, que puede recorrerse fácilmente por programa.
  • Desventajas:
  • - Hay objetos que pueden dar problemas con esta forma de juntar objetos, por ejemplo los basados en SESSION, ya que el objeto agregado (hijo) estará en la sesión del objeto padre. - Aumenta el acoplamiento, el padre puede acceder a la funcionalidad del hijo y el hijo puede acceder a la funcionalidad del padre
AGREGAR UN OBJETO A OTRO OBJETO COMO PROPIEDAD

usando AddProperty, "=" o STORE
  • Ventajas:
  • - Todos los objetos son compatibles con esta forma de agregación, incluyendo los basados en SESSION, ya que cada uno mantiene su sesión predeterminada - Disminuye el acoplamiento porque el objeto padre puede acceder al objeto hijo, pero el objeto hijo no puede acceder al objeto padre. Esto permite a que el objeto hijo sea funcionalmente independiente del objeto padre.
  • Desventajas:
  • - No permite que el objeto interior (contenido) pueda referirse al objeto exterior (padre) usando la sintaxis THIS.PARENT - Los objetos agregados no forman parte de ninguna colección dentro del padre, por lo que para recorrerlos hay que buscarlos primero.
Observaciones: - No hay diferencias de performance entre ambas formas de unir objetos - Elegir entre una forma u otra puede deberse a varios motivos, pero dos motivos mutuamente excluyentes son: Usar clases SESSION y querer la referencia THIS.PARENT

Fernando D. Bozzo

No hay comentarios. :

Publicar un comentario