MEMENTO Patrón de Comportamiento Ana María Mateo Jorge P. Andrés

Slides:



Advertisements
Presentaciones similares
DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN APLICACIONES MOVILES CON J2ME RMS Ing. Ronald Criollo.
Advertisements

Observador (observer) Visita (Visitor) Singleton
FACHADA COMPOSITOR MEMENTO
FACHADA.
Introducción 1 Puntos Clave –La orientación a objetos representa un cambio radical en los métodos tradicionales de creación de software –Los métodos tradicionales.
Reusabilidad La productividad está basada en reusabilidad y extensibilidad El reusabilidad permite desarrollar nuevas aplicaciones a partir de componentes.
Lección 1 Introducción a la POO
Aplicación del paradigma orientado a objetos
Encapsulamiento y Abstracción
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Archivos Contenido: Archivos de Texto Archivos de Acceso Aleatorio
Arreglos: Vectores en JAVA
Estructuración y modularidad de los programas Fundamentos de Programación/ Programación I
Material de apoyo Unidad 2 Estructura de datos
Lic. Rosemary Torrico Bascopé
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
El patrón de diseño Proxy Raúl Heras Alberto Blasco José Manuel Arévalo.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
Tema 10: Interfaces Antonio J. Sierra.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA OCHO THREADS.
Patrones de Comportamiento: Patrón de Diseño Observer
Clase Teórica No. 4 Programación IV
Patrón Observador Un patrón de diseño es una descripción de clases y objetos comunicándose entre si adaptada para resolver un problema de diseño general.
ESTRUCTURA DE DATOS EN JAVA
Patrones Creacionales
Bases de Datos Orientadas a Objetos (BDOO)
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Material de apoyo Unidad 4 Estructura de datos
Chain of Responsibility José Manuel Domínguez Arroyo Margarita Lozano Pérez Carlos Ignacio Mantecón Nebreda.
Patrones de diseño DECORATOR Mario Rodríguez Martín
Patrones de Diseño: Command
Luis Pereda Calvo1 Comportamiento de Objetos Estrategia (Strategy) *Política (Policy)
Manejo de Punteros y objetos en memoria dinámica en C++
COMP 250.  Ejemplo:  Suponer que se necesita codificar un programa donde se muestre como resultado el string “Bienvenidos al mundo de JAVA!!!” cien.
PATRON DE SOFTWARE: COMMAND
Hola mundo. 2 En Java para indicar el inicio y fin de un bloque de instrucciones utiliza las llaves { } es decir: { Inicio de instrucciones para la clase.
Patrones de Diseño Carolina Perozo Julio Padrón Anthony Accardi.
PATRON PROTOTYPE Cristina Merino Héctor Carbajo Alicia Arroyo.
UNIDAD VI Recursos esenciales de Java LSC. Natalia Rodríguez Castellón.
César Estéban Castañeda Luis Andrés Almanza
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
PATRÓN ADAPTER (Adaptador) Elena Moreno Ramírez Laura Sánchez Romero Aroa Solana Ruiz.
Patrón Iterator Santiago García Sánchez Rebeca Marcos Salcedo Mª Cristina Zapatero Gironda.
TEMA 9: DIAGRAMA DE CLASE EN UML
ESMERALDA LIMÓN ESCUTIA AURORA MENDOZA PASTRANA RUTH LÓPEZ muñoz I.S.C
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Capítulo 2 “Subprogramas/Funciones - Arreglos”
CONCEPTOS.
Universidad Tecnológica de Izúcar de Matamoros Programa Educativo: Tecnologías de la Información Asignatura: Base de datos para aplicaciones Tema: Base.
Abstracción El concepto de abstracción es esencial en ciencias de la computación. Un programa es en sí mismo una abstracción, un modelo de la resolución.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
Acceso a Datos Erick López Ovando Licenciado en Informática.
Programación Orientada a Objetos: CLASES Y OBJETOS
QUE ES PNL. CONCEPTO La programación neurolingüística es un proceso mental, mediante el cual utilizamos los sentidos con los cuales percibimos el mundo,
Un paseo por las nuevas funciones. Patrones de Diseño Por si no ha quedado claro, los Patrones de Diseño, son el esqueleto de las soluciones a problemas.
TALLER POO JAVA ERNESTO GOMEZ VARGAS. OBJETIVOS REALIZAR UNA APLICACIÓN SENCILLA DE P.O.O FAMILIARIZARSE CON LA HERRAMETA NETBEANS APLICAR EL CONCEPTO.
Dado que una colección esta gestionada por una clase dentro del lenguaje que estamos utilizando, y en cierta forma no se tiene un control total.
Factorías e Iterables Introducción del concepto de patrón de diseño Construcción de tipos para recorridos con for extendido Fundamentos de Programación.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Iterables virtuales Concepto, Metodología de desarrollo y Ejemplos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

MEMENTO Patrón de Comportamiento Ana María Mateo Jorge P. Andrés Victoria Pasichnyk

Introducción Memento es un patrón de comportamiento, lo cual significa que esta relacionado con el flujo de control del sistema. La forma de organizar el flujo de control puede derivar en grandes beneficios para la eficiencia y el mantenimiento del sistema.

Propósito Este patrón tiene como finalidad almacenar el estado de un objeto (o del sistema completo) en un momento dado de manera que se pueda restaurar en ese punto de manera sencilla. Para ello se mantiene almacenado el estado del objeto para un instante de tiempo en una clase independiente de aquella a la que pertenece el objeto (pero sin romper la encapsulación), de forma que ese recuerdo permita que el objeto sea modificado y pueda volver a su estado anterior.

Motivación El patrón Memento se usa para: Poder restaurar el sistema desde estados pasados. Para facilitar el hacer y deshacer de determinadas operaciones, para lo que habrá que guardar los estados anteriores de los objetos sobre los que se opere (o bien recordar los cambios de forma incremental).

Motivación: ejemplo ¿Cómo se deshace una operación en un editor gráfico?

Motivación: ejemplo Si queremos volver al estado original mediante cálculos geométricos, el resultado podría ser distinto al esperado. Por ejemplo:

¡¡¡Podemos conseguir una solución eficiente implementando el comando “undo” con MEMENTO!!!

Estructura Memento permite almacenar (parte de) el estado de Creador (Originator). Ofrece dos interfaces distintas: una estrecha para el Conserje (Caretaker) y una extendida para Creador. El Creador es capaz de crear objetos Memento con información sobre su estado y restaurar éste a partir de un Memento. El Conserje se encarga de mantener los objetos Memento y en ningún caso accede a su información interna.

Colaboraciones Un conserje solicita un memento a un creador, lo almacena durante un tiempo y se lo devuelve a su creador, tal y como ilustra el diagrama de interacción. A veces el conserje no devolverá el memento a su creador, ya que el creador podría no necesitar nunca volver a un estado anterior. Los mementos son pasivos. Sólo el creador que creó el memento asignará o recuperará su estado.

Consecuencias Mantiene la encapsulación. Simplifica la clase Creador. El uso de memento puede resultar costoso si se hacen muchas copias o las copias son voluminosas. En algunos lenguajes puede no ser trivial definir dos interfaces distintas para el memento. El objeto (conserje) que se encarga de gestionar los mementos no sabe cuánto ocupan y su almacenamiento puede provocar un coste inesperado.

Ejemplo de implementación El siguiente programa en Java ilustra el uso de "undo" con el patrón Memento. Intervienen tres clases: la clase Creador es una clase que cambia de estado; la clase Conserje se encarga de registrar los cambios del Creador; Memento guarda el objeto a salvaguardar.

Ejemplo: clase Memento class Memento { private String estado; public Memento(String estadoParaSalvar) { estado = estadoParaSalvar; } public String getEstadoSalvado() { return estado;

Ejemplo: clase Creador class Creador { private String estado; public void set(String estado) { System.out.println(“Creador: Asignando el estado "+estado); this.estado = estado; } public Memento salvarEnMemento() { System.out.println(“Creador: Salvando en Memento."); return new Memento(estado); public void restaurarDesdeMemento(Memento m) { estado = m.getEstadoSalvado(); System.out.println(“Creador: Estado después de restaurar desde Memento: "+estado); }

Ejemplo: clase Conserje class Conserje { private ArrayList<Memento> estadosSalvados = new ArrayList<Memento>(); public void añadirMemento(Memento m) { estadosSalvados.add(m); } public Memento getMemento(int indice) { return estadosSalvados.get(indice);

Ejemplo: main class MementoEjemplo { public static void main(String[] args) { Conserje conserje = new Conserje(); Creador creador = new Creador(); creador.set(“Estado1"); creador.set(“Estado2"); conserje.añadirMemento(creador.salvarEnMemento()); creador.set(“Estado3"); conserje.añadirMemento(creador.salvarEnMemento()); creador.set(“Estado4"); creador.restaurarDesdeMemento(conserje.getMemento(1)); }

Ejemplo: resultado de la ejecución La salida por pantalla es: Creador : Asignando el estado Estado1 Creador : Asignando el estado Estado2 Creador : Salvando en Memento. Creador : Asignando el estado Estado3 Creador : Asignando el estado Estado4 Creador : Estado después de restaurar desde Memento : Estado3

Conclusión Utilizando el patrón Memento se puede encapsular el estado interno de un objeto en otro objeto distinto, y encapsularlo de forma que ese segundo objeto sólo pueda ser utilizado por el objeto que lo creó.