Departamento de Ingeniería del Software e Inteligencia Artificial Universidad Complutense de Madrid Simulación del patrón … (1)
Editor gráfico: 1ª Iteración Construcción de un editor gráfico muy sencillo Primera iteración Dos figuras simples Rectángulo Elipse Una herramienta de creación para cada una de ellas Al pulsar sobre el área de dibujado aparece una figura de un tamaño concreto
Simulación del patrón … (1) Clases iniciales
Simulación del patrón … (1) Escenario 1: Pulsación de un botón Vuestro primer role-play ¿Qué pasa al pulsar uno de los botones de la interfaz? VentanaEditor es quien recibe el evento ActionPerformed Pregunta a BotonHerramienta por el tipo de herramienta que se ha activado Informa al area de dibujado de la acción seleccionada
Simulación del patrón … (1) Escenario 2: Pulsación sobre el área de dibujado (1) ¿Qué pasa al pulsar sobre el área de dibujado? Dibujo es quien recibe el evento MousePressed En areaDibujo, herramientaActiva=ELIPSE Crea FElipse e inserta
Simulación del patrón … (1) Escenario 2: Pulsación sobre el área de dibujado (2) ¿Qué pasa al pulsar sobre el área de dibujado? Dibujo es quien recibe el evento MousePressed En areaDibujo, herramientaActiva=RECT Crea FRect e inserta
Simulación del patrón … (1) Conclusiones de este diseño Código “poco ampliable” Crear nuevas figuras supone crear nuevas constantes y añadir IFs Código spaguetti if...then...else if... Necesitamos crear las figuras de otra forma…
Simulación del patrón … (1) Solución: Patrón Prototype Propósito: permite representar un cierto tipo de objetos mediante una instancia prototípica, que se copia cada vez que se ha de crear un objeto nuevo Roles: Client: Crea los objetos pidiendo al prototipo que se clone Protoype: Declara la interfaz de copia Concrete prototype: Implementa una operación para copiarse a sí mismo
Simulación del patrón … (1) Nuevas clases
Simulación del patrón … (1) Escenario 1 (after) : Pulsación de un botón ¿Qué pasa al pulsar uno de los botones de la interfaz? VentanaEditor es quien recibe el evento ActionPerformed Pregunta a BotonHerramienta por la herramienta que se ha activado Informa al area de dibujado de la herramienta seleccionada
Simulación del patrón … (1) Escenario 2: Pulsación sobre el área de dibujado (1 y 2) ¿Qué pasa al pulsar sobre el área de dibujado? Dibujo es quien recibe el evento MousePressed En areaDibujo, se pide a la herramienta activa que cree la figura
Simulación del patrón … (1) Ampliaciones Desacopla a la herramienta de los tipos concretos de las figuras Podemos crear nuevas figuras sin modificar la clase HerramientaCreacion No necesitamos crear las jerarquías de factorías y objetos de otros patrones de creación En Java, nos podemos aprovechar de la interfaz Cloneable Método clone() para hacer una copia del objeto atributo a atributo Cuidado con clases con atributos complejos
Simulación del patrón … (1) Conclusions