SlideShare a Scribd company logo
1 of 19
PATRONES Memento
Frecuentemente los desarrolladores necesitan guardar el estado de un objeto para recuperarlo más tarde. Esto claro, sin perder el encapsulamiento del objeto.  Una de las maneras de hacerlo, es utilizando el patrón de diseño  Memento . En esta presentación vamos a ver como funciona, y un ejemplo práctico . PATRONES MEMENTO
Propósito El objetivo principal de Memento es guardar el estado de un objeto sin romper el encapsulamiento del mismo. PATRONES MEMENTO
[object Object],[object Object],[object Object],PATRONES MEMENTO
UML  PATRONES MEMENTO
[object Object],[object Object],[object Object],[object Object],[object Object],PATRONES MEMENTO
[object Object],[object Object],[object Object],[object Object],[object Object],PATRONES MEMENTO
UML, (Interacción)  PATRONES MEMENTO
[object Object],[object Object],[object Object],[object Object],[object Object],MEMENTO PATRONES
[object Object],[object Object],[object Object],PATRONES MEMENTO
[object Object],[object Object],[object Object],MEMENTO PATRONES
Ejemplo Un ejemplo donde se guarda temporalmente el estado de un perspectiva de venta, para después recuperarlo La idea es tener una clase  PersVenta  que seria la Originator, es decir la que crea y usa el Memento Una clase  MemoriaPerspectiva  que seria la  CareTaker,  es decir el responsable de la custodia del Memento Una clase  Memento,  que como dice el nombre es el Memento PATRONES MEMENTO
public class  PersVenta{ private  String nombre, telefono; private   double  presupuesto; public   void  setNombre(String nombre){ System.out.println(" Nombre   "+ nombre); this .nombre = nombre; } public void  setTelefono(String telefono){ System.out.println(" Telefono : "+ telefono); this .telefono = telefono; } public void  setPresupuesto(double presupuesto){ System.out.println(" Presupuesto : "+ presupuesto); this .presupuesto = presupuesto; } Clase Originator Propiedades del estado con métodos  set PATRONES MEMENTO
. . . . public  String getNombre(){  return  nombre; } public  String getTelefono() { return  telefono;} public  Double getPresupuesto() { return  presupuesto;} public  Memento SalvaMemento(){ System.out.println(" Salvando estado -- "); return new  Memento(nombre,telefono,presupuesto); }  public   void  RestauraMemento(Memento memento){ System.out.println(" Restaurando estado -- "); this .setNombre(memento.getNombre()); this .setTelefono(memento.getTelefono()); this .setPresupuesto(memento.getPresupuesto()); } } Propiedades del estado con métodos  get Crea el Memento Restaura el Memento MEMENTO PATRONES
Clase Memento que guarda el estado del Objeto public class  Memento{ private  String nombre; private  String telefono; private   double  presupuesto; public  Memento(String nombre, String telefono, double  presupuesto){ this .nombre = nombre; this .telefono = telefono; this .presupuesto = presupuesto; }  Mismas propiedades del Objeto a guardar Constructor de la Clase PATRONES MEMENTO
. . . . public   void  setNombre(String nombre){ this .nombre = nombre; } public void  setTelefono(String telefono){ this .telefono = telefono; } public void  setPresupuesto(double presupuesto){  this .presupuesto = presupuesto; } public  String getNombre(){ return  nombre; } public  String getTelefono() { return  telefono;} public  Double getPresupuesto() { return  presupuesto;} } Métodos  set()  y  get()  del Memento PATRONES MEMENTO
public class  MemoriaPerspectiva{ private  Memento memento; public void  setMemento (Memento memento){ this.memento = memento; } public Memento  getMemento (){ return memento;} } Clase Caretaker, es la que cuida el Memento PATRONES MEMENTO
public class  MainApp{ public static void  main(String[] args){ PersVenta pv =  new  PersVenta(); pv.setNombre(" Camilo "); pv.setTelefono(" 316 7985 "); pv.setPresupuesto(15000); MemoriaPerspectiva m =  new  MemoriaPerspectiva(); m.setMemento(pv.SalvaMemento()); pv.setNombre(" Andres "); pv.setTelefono(" 314 5485 "); pv.setPresupuesto(18000); pv.RestauraMemento(m.getMemento()); } } Para finalizar la Clase donde está el  Main() Crea un Objeto de perspectiva de venta y le introduce propiedades Guarda el estado Vuelve y cambia el Originador Restaura  el estado guardado PATRONES MEMENTO
La salida del programa anterior sería: PATRONES MEMENTO

More Related Content

What's hot

Programacion orientada a objetos y programacion orientada a eventos
Programacion orientada a objetos y programacion orientada a eventosProgramacion orientada a objetos y programacion orientada a eventos
Programacion orientada a objetos y programacion orientada a eventos
Josue Ivan Turcios
 
Interfaces De Entrada Y Salida
Interfaces De Entrada Y SalidaInterfaces De Entrada Y Salida
Interfaces De Entrada Y Salida
BigbossH
 
Programación visual y orientada a eventos
Programación  visual y orientada a eventosProgramación  visual y orientada a eventos
Programación visual y orientada a eventos
Mario Martinez Alvarez
 
Casos de Uso ejercicios
Casos de Uso ejerciciosCasos de Uso ejercicios
Casos de Uso ejercicios
Walter Chacon
 
Unidad 7 Mad Modelado DiseñO Contratos Y Casos De Uso Reales
Unidad 7 Mad Modelado DiseñO    Contratos Y Casos De Uso RealesUnidad 7 Mad Modelado DiseñO    Contratos Y Casos De Uso Reales
Unidad 7 Mad Modelado DiseñO Contratos Y Casos De Uso Reales
Sergio Sanchez
 
Español estructurado
Español estructuradoEspañol estructurado
Español estructurado
Jorge Garcia
 

What's hot (20)

Diagramas De Caso De Uso
Diagramas De Caso De UsoDiagramas De Caso De Uso
Diagramas De Caso De Uso
 
Programacion orientada a objetos y programacion orientada a eventos
Programacion orientada a objetos y programacion orientada a eventosProgramacion orientada a objetos y programacion orientada a eventos
Programacion orientada a objetos y programacion orientada a eventos
 
Otras relaciones y modelos bases de datos
Otras relaciones y modelos bases de datosOtras relaciones y modelos bases de datos
Otras relaciones y modelos bases de datos
 
Interfaces De Entrada Y Salida
Interfaces De Entrada Y SalidaInterfaces De Entrada Y Salida
Interfaces De Entrada Y Salida
 
Programación visual y orientada a eventos
Programación  visual y orientada a eventosProgramación  visual y orientada a eventos
Programación visual y orientada a eventos
 
Casos de Uso ejercicios
Casos de Uso ejerciciosCasos de Uso ejercicios
Casos de Uso ejercicios
 
Modelo Entidad Relación
Modelo Entidad RelaciónModelo Entidad Relación
Modelo Entidad Relación
 
Conceptos de software
Conceptos de softwareConceptos de software
Conceptos de software
 
Concepto y extensiones de negocio de Eriksson Penker
Concepto y extensiones de negocio de Eriksson PenkerConcepto y extensiones de negocio de Eriksson Penker
Concepto y extensiones de negocio de Eriksson Penker
 
Modelos de dominio
Modelos de dominioModelos de dominio
Modelos de dominio
 
Formato ieee830
Formato ieee830Formato ieee830
Formato ieee830
 
Diagrama de estado
Diagrama de estadoDiagrama de estado
Diagrama de estado
 
Estándares para el Modelado de Procesos de Negocios
Estándares para el Modelado de Procesos de NegociosEstándares para el Modelado de Procesos de Negocios
Estándares para el Modelado de Procesos de Negocios
 
MODELADO RUP UML
MODELADO RUP UMLMODELADO RUP UML
MODELADO RUP UML
 
Unidad 7 Mad Modelado DiseñO Contratos Y Casos De Uso Reales
Unidad 7 Mad Modelado DiseñO    Contratos Y Casos De Uso RealesUnidad 7 Mad Modelado DiseñO    Contratos Y Casos De Uso Reales
Unidad 7 Mad Modelado DiseñO Contratos Y Casos De Uso Reales
 
Herramientas CASE
Herramientas CASEHerramientas CASE
Herramientas CASE
 
Conceptos básicos de programación orientada a objetos (poo)
Conceptos básicos de programación orientada a objetos (poo)Conceptos básicos de programación orientada a objetos (poo)
Conceptos básicos de programación orientada a objetos (poo)
 
Unidad 4 Mad Modelado Analisis Casos De Uso
Unidad 4 Mad Modelado Analisis Casos De UsoUnidad 4 Mad Modelado Analisis Casos De Uso
Unidad 4 Mad Modelado Analisis Casos De Uso
 
Español estructurado
Español estructuradoEspañol estructurado
Español estructurado
 
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteTópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
 

Viewers also liked

Patron de diseño iterator
Patron de diseño iteratorPatron de diseño iterator
Patron de diseño iterator
Daniel Santillan
 
Architecture in agile projects
Architecture in agile projectsArchitecture in agile projects
Architecture in agile projects
Leonardo Rosales
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
kaolong
 
1.1ARQUITECTURA DE CUATRO MAS UN VISTAS
1.1ARQUITECTURA DE  CUATRO  MAS UN VISTAS1.1ARQUITECTURA DE  CUATRO  MAS UN VISTAS
1.1ARQUITECTURA DE CUATRO MAS UN VISTAS
adolfo0890
 
IFML - The interaction flow modeling language, the OMG standard for UI modeli...
IFML - The interaction flow modeling language, the OMG standard for UI modeli...IFML - The interaction flow modeling language, the OMG standard for UI modeli...
IFML - The interaction flow modeling language, the OMG standard for UI modeli...
Marco Brambilla
 
IFML - Interaction Flow Modeling Language - tutorial on UI and UX modeling &...
IFML -  Interaction Flow Modeling Language - tutorial on UI and UX modeling &...IFML -  Interaction Flow Modeling Language - tutorial on UI and UX modeling &...
IFML - Interaction Flow Modeling Language - tutorial on UI and UX modeling &...
Marco Brambilla
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicas
landeta_p
 
Chapter 5 software design
Chapter 5 software designChapter 5 software design
Chapter 5 software design
Piyush Gogia
 

Viewers also liked (20)

Patron de diseño iterator
Patron de diseño iteratorPatron de diseño iterator
Patron de diseño iterator
 
Proyecto final OOP
Proyecto final OOPProyecto final OOP
Proyecto final OOP
 
Webinar IFML en Español
Webinar IFML en EspañolWebinar IFML en Español
Webinar IFML en Español
 
Architecture in agile projects
Architecture in agile projectsArchitecture in agile projects
Architecture in agile projects
 
Análisis de arquitecturas de software
Análisis de arquitecturas de softwareAnálisis de arquitecturas de software
Análisis de arquitecturas de software
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
 
Patrones para asignar responsabilidades. grasp
Patrones para asignar responsabilidades. graspPatrones para asignar responsabilidades. grasp
Patrones para asignar responsabilidades. grasp
 
1.1ARQUITECTURA DE CUATRO MAS UN VISTAS
1.1ARQUITECTURA DE  CUATRO  MAS UN VISTAS1.1ARQUITECTURA DE  CUATRO  MAS UN VISTAS
1.1ARQUITECTURA DE CUATRO MAS UN VISTAS
 
Patron Template
Patron TemplatePatron Template
Patron Template
 
Interaction Flow Modeling Language: updates on the Beta2 version - by the OMG...
Interaction Flow Modeling Language: updates on the Beta2 version - by the OMG...Interaction Flow Modeling Language: updates on the Beta2 version - by the OMG...
Interaction Flow Modeling Language: updates on the Beta2 version - by the OMG...
 
El diagrama en la arquitectura.
El diagrama en la arquitectura.El diagrama en la arquitectura.
El diagrama en la arquitectura.
 
IFML - The interaction flow modeling language, the OMG standard for UI modeli...
IFML - The interaction flow modeling language, the OMG standard for UI modeli...IFML - The interaction flow modeling language, the OMG standard for UI modeli...
IFML - The interaction flow modeling language, the OMG standard for UI modeli...
 
IFML - Interaction Flow Modeling Language - tutorial on UI and UX modeling &...
IFML -  Interaction Flow Modeling Language - tutorial on UI and UX modeling &...IFML -  Interaction Flow Modeling Language - tutorial on UI and UX modeling &...
IFML - Interaction Flow Modeling Language - tutorial on UI and UX modeling &...
 
Why We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsWhy We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile Projects
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicas
 
Especificación de Arquitectura de Software
Especificación de Arquitectura de SoftwareEspecificación de Arquitectura de Software
Especificación de Arquitectura de Software
 
Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1
 
Arquitectura De Software Para Dummies
Arquitectura De Software Para DummiesArquitectura De Software Para Dummies
Arquitectura De Software Para Dummies
 
Chapter 5 software design
Chapter 5 software designChapter 5 software design
Chapter 5 software design
 
Lean Software Development Principles
Lean Software Development PrinciplesLean Software Development Principles
Lean Software Development Principles
 

Similar to Patron Memento

Unidad 1, 2 y_3_algoritmos
Unidad 1, 2 y_3_algoritmosUnidad 1, 2 y_3_algoritmos
Unidad 1, 2 y_3_algoritmos
Grisell d?z
 
Tema 8 desarrollo de aplicaciones en java por gio
Tema 8   desarrollo de aplicaciones en java por gioTema 8   desarrollo de aplicaciones en java por gio
Tema 8 desarrollo de aplicaciones en java por gio
Robert Wolf
 
Configuracion de variables de entorno
Configuracion de variables de entornoConfiguracion de variables de entorno
Configuracion de variables de entorno
Sheyli Patiño
 
JAVA2: Segunda Lección
JAVA2: Segunda LecciónJAVA2: Segunda Lección
JAVA2: Segunda Lección
Jose Martinez
 

Similar to Patron Memento (20)

Estructuras y clases
Estructuras y clasesEstructuras y clases
Estructuras y clases
 
MéTodos En Java
MéTodos En JavaMéTodos En Java
MéTodos En Java
 
Unidad 1, 2 y_3_algoritmos
Unidad 1, 2 y_3_algoritmosUnidad 1, 2 y_3_algoritmos
Unidad 1, 2 y_3_algoritmos
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamica
 
Administración de memoria - arreglos estáticos y dinámicos
Administración de memoria - arreglos estáticos y dinámicosAdministración de memoria - arreglos estáticos y dinámicos
Administración de memoria - arreglos estáticos y dinámicos
 
Modelo Estatico
Modelo EstaticoModelo Estatico
Modelo Estatico
 
Seguridad en access
Seguridad en accessSeguridad en access
Seguridad en access
 
Modelo Persistente
Modelo PersistenteModelo Persistente
Modelo Persistente
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Programacion Orienta A Objetos
Programacion Orienta A ObjetosProgramacion Orienta A Objetos
Programacion Orienta A Objetos
 
Introducción a Java Persistence API
Introducción a Java Persistence APIIntroducción a Java Persistence API
Introducción a Java Persistence API
 
Tema 11
Tema 11Tema 11
Tema 11
 
Tutorial de flash
Tutorial de flashTutorial de flash
Tutorial de flash
 
Tema 8 desarrollo de aplicaciones en java por gio
Tema 8   desarrollo de aplicaciones en java por gioTema 8   desarrollo de aplicaciones en java por gio
Tema 8 desarrollo de aplicaciones en java por gio
 
P2C2 Introducción a JEE5
P2C2 Introducción a JEE5P2C2 Introducción a JEE5
P2C2 Introducción a JEE5
 
Configuracion de variables de entorno
Configuracion de variables de entornoConfiguracion de variables de entorno
Configuracion de variables de entorno
 
Desarrollo android almacenamiento de datos
Desarrollo android    almacenamiento de datosDesarrollo android    almacenamiento de datos
Desarrollo android almacenamiento de datos
 
JAVA2: Segunda Lección
JAVA2: Segunda LecciónJAVA2: Segunda Lección
JAVA2: Segunda Lección
 
Programacion en JAVA 2
Programacion en JAVA 2Programacion en JAVA 2
Programacion en JAVA 2
 
Modelo Simulado
Modelo SimuladoModelo Simulado
Modelo Simulado
 

Recently uploaded

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Recently uploaded (11)

Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 

Patron Memento

  • 2. Frecuentemente los desarrolladores necesitan guardar el estado de un objeto para recuperarlo más tarde. Esto claro, sin perder el encapsulamiento del objeto. Una de las maneras de hacerlo, es utilizando el patrón de diseño Memento . En esta presentación vamos a ver como funciona, y un ejemplo práctico . PATRONES MEMENTO
  • 3. Propósito El objetivo principal de Memento es guardar el estado de un objeto sin romper el encapsulamiento del mismo. PATRONES MEMENTO
  • 4.
  • 5. UML PATRONES MEMENTO
  • 6.
  • 7.
  • 8. UML, (Interacción) PATRONES MEMENTO
  • 9.
  • 10.
  • 11.
  • 12. Ejemplo Un ejemplo donde se guarda temporalmente el estado de un perspectiva de venta, para después recuperarlo La idea es tener una clase PersVenta que seria la Originator, es decir la que crea y usa el Memento Una clase MemoriaPerspectiva que seria la CareTaker, es decir el responsable de la custodia del Memento Una clase Memento, que como dice el nombre es el Memento PATRONES MEMENTO
  • 13. public class PersVenta{ private String nombre, telefono; private double presupuesto; public void setNombre(String nombre){ System.out.println(" Nombre "+ nombre); this .nombre = nombre; } public void setTelefono(String telefono){ System.out.println(" Telefono : "+ telefono); this .telefono = telefono; } public void setPresupuesto(double presupuesto){ System.out.println(" Presupuesto : "+ presupuesto); this .presupuesto = presupuesto; } Clase Originator Propiedades del estado con métodos set PATRONES MEMENTO
  • 14. . . . . public String getNombre(){ return nombre; } public String getTelefono() { return telefono;} public Double getPresupuesto() { return presupuesto;} public Memento SalvaMemento(){ System.out.println(" Salvando estado -- "); return new Memento(nombre,telefono,presupuesto); } public void RestauraMemento(Memento memento){ System.out.println(" Restaurando estado -- "); this .setNombre(memento.getNombre()); this .setTelefono(memento.getTelefono()); this .setPresupuesto(memento.getPresupuesto()); } } Propiedades del estado con métodos get Crea el Memento Restaura el Memento MEMENTO PATRONES
  • 15. Clase Memento que guarda el estado del Objeto public class Memento{ private String nombre; private String telefono; private double presupuesto; public Memento(String nombre, String telefono, double presupuesto){ this .nombre = nombre; this .telefono = telefono; this .presupuesto = presupuesto; } Mismas propiedades del Objeto a guardar Constructor de la Clase PATRONES MEMENTO
  • 16. . . . . public void setNombre(String nombre){ this .nombre = nombre; } public void setTelefono(String telefono){ this .telefono = telefono; } public void setPresupuesto(double presupuesto){ this .presupuesto = presupuesto; } public String getNombre(){ return nombre; } public String getTelefono() { return telefono;} public Double getPresupuesto() { return presupuesto;} } Métodos set() y get() del Memento PATRONES MEMENTO
  • 17. public class MemoriaPerspectiva{ private Memento memento; public void setMemento (Memento memento){ this.memento = memento; } public Memento getMemento (){ return memento;} } Clase Caretaker, es la que cuida el Memento PATRONES MEMENTO
  • 18. public class MainApp{ public static void main(String[] args){ PersVenta pv = new PersVenta(); pv.setNombre(" Camilo "); pv.setTelefono(" 316 7985 "); pv.setPresupuesto(15000); MemoriaPerspectiva m = new MemoriaPerspectiva(); m.setMemento(pv.SalvaMemento()); pv.setNombre(" Andres "); pv.setTelefono(" 314 5485 "); pv.setPresupuesto(18000); pv.RestauraMemento(m.getMemento()); } } Para finalizar la Clase donde está el Main() Crea un Objeto de perspectiva de venta y le introduce propiedades Guarda el estado Vuelve y cambia el Originador Restaura el estado guardado PATRONES MEMENTO
  • 19. La salida del programa anterior sería: PATRONES MEMENTO