140 likes | 217 Views
Simulación del patrón … (4). Editor gráfico: 4ª Iteración. Queremos poder agrupar figuras Simplificación: Crear un único grupo de figuras Herramienta agrupar Al pulsar sobre una figura, ésta se añade al grupo. Clases iniciales. Escenario 1: Añadir una figura al grupo.
E N D
Editor gráfico: 4ª Iteración • Queremos poder agrupar figuras • Simplificación: Crear un único grupo de figuras • Herramienta agrupar • Al pulsar sobre una figura, ésta se añade al grupo Simulación del patrón … (4)
Clases iniciales Simulación del patrón … (4)
Escenario 1: Añadir una figura al grupo • ¿Cómo se añade una nueva figura al grupo de figuras? • MousePressed • Si se ha pulsado sobre una figura: • Añadirla al grupo • Eliminarla del dibujo Simulación del patrón … (4)
Escenario 2: Pintado del dibujo • ¿Cómo haremos el pintado del dibujo? • Antes sólo teníamos una lista de figuras • Ahora también tenemos que pintar el grupo aparte Simulación del patrón … (4)
Escenario 3: Mover el grupo • ¿Cómo seleccionar y mover el grupo? • No es una figura, por lo que la herramienta de selección lo debe tratar aparte Simulación del patrón … (4)
Conclusiones de este diseño • Aunque las figuras y el grupo tienen una interfaz similar en el código hay que tratarlos de distinta forma • Distinción entre objetos • Necesitamos estructurar las clases de otra forma… Simulación del patrón … (4)
Solución: Patrón Composite • Propósito: permite representar estructuras continente-contenido donde los clientes tratan de igual forma a compuestos e individuos • Roles: • Component: Define la interfaz común a individuos y compuestos e implementa el comportamiento por defecto • Leaf: Son los elementos individuo • Composite • Contenedor de objetos Leaf • Implementa las operaciones de acceso a los hijos • Client manipula todos los objetos a través de la interfaz Component Simulación del patrón … (4)
Solución: Patrón Composite Simulación del patrón … (4)
Nuevas clases Simulación del patrón … (4)
Escenario 1 (after): Añadir una figura al grupo • ¿Cómo se añade una nueva figura al grupo de figuras? • MousePressed • Si se ha pulsado sobre una figura: • Añadirla al grupo • Eliminarla del dibujo Simulación del patrón … (4)
Escenario 2 y 3 (after) • ¿Cómo haremos el pintado del dibujo? • ¿Cómo seleccionamos el grupo de figuras? • ¿Cómo moveremos el grupo de figuras? Simulación del patrón … (4)
Conclusiones • Hemos simplificado el código de Dibujo • No hay distinciones de casos • Podemos definir nuevas figuras compuestas sin afectar a la jerarquía de figuras • ¿Puede Dibujo implementarse usando GrupoFiguras? Simulación del patrón … (4)
Conclusions Simulación del patrón … (4)