PATRON COMPOSITE
Presentado por:
PABLO ANDRES DIAZ
SAIN HASSAM CAICEDO
Patrón Composite
El patrón Composite permite construir objetos
complejos componiendo de forma recursiva objetos
similares en una estructura de árbol.
Permite manipular todos los objetos contenidos en el
árbol de forma uniforme, ya que todos ellos poseen
una interfaz común definida en la clase raíz.
El patrón Composite hace parte de la familia de los
patrones estructurales de J2SE
Aplicación
●
●
Para representar jerarquías de objetos todo-parte.
Para que los clientes puedan ignorar la diferencia
entre los objetos compuestos y los objetos de la
estructura de forma uniforme.
Participantes del Composite
Componente: Clase abstracta de la que heredan todas las demas
● Declara la interfaz de todos los objetos de la composición.
● Declara una interfaz de acceso y manipulación de los
componentes hijo
● Opcionalmente, define una interfaz para acceder al padre de
cada componente
Hoja: Nodo hoja del árbol de objetos a partir de la estructura de
clases
● No tiene hijos
● Define el comportamiento de los objetos primitivos del
compuesto
Participantes del Composite
Compuesto: Superclase que define los métodos necesarios para
manejar los objetos que agrupa un nodo compuesto
Define el comportamiento de los componentes compuestos
● Almacena a los hijos
● Implementa las operaciones de manejo de los componentes
hijos
● Los objetos compuestos normalmente tratan a los objetos que
contienen como instancias de Componente
●
Cliente: Maneja los objetos que forman parte del Compuesto
como Componentes
Estructura (clases)
Estructura (objetos)
Ejemplo practico
Ejemplo Practico
Ejemplo Practico
Ejemplo Patrón Composite
Consecuencias
Se define una jerarquía de objetos hoja y objetos compuestos
que se van componiendo de forma recursiva
● El cliente se simplifica, ya que trata los objetos hoja y los
compuestos de la misma forma
● La inclusión de nuevas clases hoja o clases compuestas no
modifica la estructura anterior ni el código del cliente
● La desventaja de poder añadir nuevos componentes surge si se
desea restringir el tipo de objetos que forman parte de una
compuesto – Necesidad de comprobaciones dinámicas
●
Implementación en Java
public interface Componente {
Compuesto obtenerCompuesto();
}
public class Hoja implements Componente {
public Compuesto obtenerCompuesto(){
return null;
}
Implementación en Java
public class Compuesto implements Componente {
private Nombre nombre;
private Vector lista;
public Compuesto (String nombre){
nombre = new Nombre(nombre);
lista = new Vector();
}
public void add (Componente componente){
lista.addElement(componente);
}
public boolean remove (Componente componente){
return lista.removeElement(componente);
}
Implementación en Java
public Componente obtenerHijo (int hijo){
return (Componente) lista.elementAt(hijo);
}
public Compuesto obtenerCompuesto(){
return this;
}
} //termina la clase Compuesto
Ejemplos comunes en Java
En el paquete javax.swing se encuentran:
Componente --- Component
●CompuestoAbstracto --- Container
●CompuestoConcreto – JPanel, JFrame, JDialog
●Hoja --- JLabel, JTextField, JButton
●
EJERCICIO
Situación: Muchas clases de sistemas
manufacturados, tales como sistemas de computo o
de estéreo, están compuestos de componentes
individuales y subsistemas que contienen
componentes. Por ejemplo, un sistema de computo
puede tener varios chasis que contienen
componentes (chasis de disco duro, chasis de
alimentación), y buses que contienen tarjetas. El
sistema entero esta compuesto
EJERCICIO
Descargar

eisc.univalle.edu.co