Вы находитесь на странице: 1из 13

Ingeniera de Sistemas II

Composite
Universidad Catlica de La Plata
Facultad de Ciencia y Tecnologa
Profesor: C. Sebastin Castaeda
Cursada 2014

Composite
Propsito
Compone objetos en estructuras de rbol para representar jerarquas
parte-todo. Permite que los clientes traten de manera uniforme a los
objetos individuales y compuestos.

Motivacin
Ejemplo visto en clase sobre representacin de topografas
Modelizacin de las abstracciones de un editor grfico, lneas, polgonos,
texto y dibujos compuestos

Ingeniera de Sistemas II - 2014

Composite
Aplicabilidad
Para representar jerarquas de objetos parte-todo (part-whole)
Obviar las diferencias entre los objetos individuales y compuestos.
Los clientes tratarn a todos los objetos de la estructura
compuesta de manera uniforme.

Ingeniera de Sistemas II - 2014

Composite - Estructura
El cliente utiliza la
interfaz componente
para manipular los
objetos de la
composicin

Define una interfaz para


todos los objetos en la
composicin, tanto
compuestos como hojas

Puede implementar un
comportamiento por defecto para
add(), remove(), getChild() y
dems operaciones

Las hojas heredan los


mtodos tales como add(),
remove() y getChilds(); que
no necesariamente tienen
sentido para una hoja.
Una hoja no tiene hijos
Define el comportamiento para
los elementos en la composicin
Implementa las operaciones que
soporta la composicin.

Define el comportamiento
para los componentes que
tienen hijos y almacena
dichos componentes.

Ingeniera de Sistemas II - 2014

Tambin
implementa las
operaciones
relacionadas con las
hojas.

Composite
Participantes
Component

Declara la interfaz de los objetos de la composicin


Implementa el comportamiento comn a todas las clases
Declara una interfaz para acceder y gestionar los componentes hijos

Leaf

Representa los objetos primitivos de la composicin, estos no tienen componentes hijos

Composite

Define el comportamiento de los componentes que tienen hijos


Almacena componentes hijos
Implementa las operaciones que permiten acceder y gestionar los componentes hijos

Client

Manipula los objetos en la composicin a travs de la interfaz definida por Component


Ingeniera de Sistemas II - 2014

Composite
Consecuencias
Ventajas
Facilita el agregado de nuevos componentes
Hace que el cdigo de los clientes sea mas simple, puesto que no se
necesita discernir si estamos tratando con un objeto simple o compuesto

Desventajas
Se dificulta la restriccin de los tipos de componentes que puede tener
un objeto compuesto. Es posible, que no todas las composiciones sean
vlidas o tengan sentido
Ingeniera de Sistemas II - 2014

Composite
Implementacin
Donde deberan declararse las operaciones para manejar a los hijos (add,
remove, getChild)?
Component: nos permite obtener un diseo mas transparente, ya que
podemos tratar a todos los objetos de la misma manera. Pero no es
segura, ya que podramos realizar operaciones sin sentido sobre los
componentes primitivos en ejecucin.
Composite: es un diseo seguro, ya que cualquier operacin no vlida
sobre los componentes hoja, ser detectada en compilacin. Perdemos
transparencia ya que las hojas y los objetos compuestos tienen
diferentes interfaces.
Ingeniera de Sistemas II - 2014

Composite
Implementacin

TRANSPARENCIA

SEGURIDAD

Ingeniera de Sistemas II - 2014

Composite
Implementacin
El componente debera ser el encargado de mantener una
lista de sus componentes hijos? Es decir, debera ser esta
lista una variable de instancia de Component o Composite?
Al definir esta estructura en Composite en vez de Component, no
tenemos el overhead de repetir esta estructura en cada componente
hoja.

Es importante la ordenacin de los hijos?


Depende de la aplicacin y sus requerimientos.

Ingeniera de Sistemas II - 2014

Composite
Implementacin
Quien debera encargarse de eliminar componentes
(liberar los recursos)?
Si no tenemos Garbage Collector, en general es buena idea que sea el
Composite el responsable de liberar los recursos del componente
eliminado

Cual es la mejor estructura para almacenar los


componentes?
Depende de la aplicacin (lista enlazada, arreglo, arboles, hash, etc)

Ingeniera de Sistemas II - 2014

10

Composite
Existen muchos ejemplos de estructuras que pueden modelarse utilizando
las ideas del patrn Composite:
Elementos de un editor grfico:
hojas: circulo, rectngulo, texto, lnea, etc
compuesto: dibujo
Sistema de directorios:
hojas: archivos, accesos directos
compuesto: directorios, particiones
Widgets de una interfaz grafica:
hojas: botones, labels, input box, combo box, etc
compuesto: ventanas, radio group, panel, tool bar, etc
Ingeniera de Sistemas II - 2014

11

Composite - Resumen
Provee una estructura para almacenar tanto objetos individuales como
compuestos
Permite a los clientes tratar a los objetos compuestos e individuales de
manera uniforme
Un componente es cualquier objeto en la estructura compuesta. Los
componentes pueden ser otros objetos compuestos o nodos hoja

Ingeniera de Sistemas II - 2014

12

Composite - Resumen
Al implementar Composite es necesario definir varias cuestiones de
implementacin (ejemplo: operaciones para manipular componentes).
Ser necesario encontrar el mejor balance entre transparencia y
seguridad, segn nuestras necesidades
No hay que tener la expectativa (como en cualquier patrn) que este
implementado exactamente como en la teora. Por ejemplo, en el diseo
de las Topografas no fue necesario definir las operaciones para
agregar y quitar componentes

Ingeniera de Sistemas II - 2014

13

Вам также может понравиться