Kleinner Farias e Raphael do Vale

Slides:



Advertisements
Apresentações semelhantes
ABSTRAÇÃO processo de representar um grupo de entidades através de seus atributos comuns feita a abstração, cada entidade particular (instância) do grupo.
Advertisements

Collections Marco Antonio, Arquiteto de Software – TJDF Atualizado Dezembro/2008.
PHPOO Erick Souza. Conceitos de Orientação a Objetos Objeto é um conceito ou item(concreto ou abstrato). Software orientado a objetos Uma classe é uma.
Projeto de Sistemas de Software
Projeto de Sistemas de Software
Padrão de Projeto Interpreter
Projeto de Sistemas de Software Trabalho de Padrões de Projeto
Projeto de Sistemas de Software(PSS) Baldoino F. dos S. Neto
Padrão de Projeto Memento
Padrões de Projeto Prototype.
Padrão de Projeto Iterator
Projeto de Sistemas de Software Leandra Mara da Silva
Java: Pacotes e Modificadores de Visibilidade
Orientação a Objetos: Modificador Final para Métodos e Classes
Persistência de objetos em arquivo texto usando Java
2002 LCG/UFRJ. All rights reserved. 1 Tópicos em C++ Claudio Esperança Paulo Roma Cavalcanti.
Singleton.
1 Memento. 2 Há situações em que é necessário registrar o estado interno de um objeto em determinados pontos do processamento. –e.g.: checkpoints e mecanismos.
Eduardo Bezerra Padrões GoF Eduardo Bezerra
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Walfredo Cirne walfredo.dsc.ufpb.br
Polimorfismo e Classes Abstratas Profa
Classes & Objectos em JAVA5
Métodos Programação II 1 Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre Elementos de Classe, class wrappers.
Classes e objetos P. O. O. Prof. Grace.
Curso de extensão em Desenvolvimento Web
O Mecanismo de Threads em Java 2. Criar uma classe herdeira da super classe Thread public class minhaThread extends Thread{ public class minhaThread extends.
Concorrência em Java Threads em Java.
Tipos Agregados Homogêneos e Listas
Professor: Hyggo Almeida
C# Sharp Shooters.NET Universidade Federal de Pernambuco Centro de Informática Recife, 23/09/2002 Autor: Marden Menezes Costa Propriedades.
Singleton e Adapter Professor: Nazareno Andrade
JAVA Orientação a Objetos
Padrão de Projeto Visitor
Interfaces.
Atributos, Encapsulamento e Interface em Java
Programação I Aula 2 (Métodos)
Linguagem de Programação JAVA
Os métodos equals() e hashCode()
if669 - Introdução à Programação
Orientação a Objetos e Java Graduação em Ciência da Computação
Professora Lucélia Oliveira
LEONARDO SIMAS JUSSI BARROS WESLLEY VIEIRA Flyweight.
Orientação a Objetos Parte I
Pilhas Profa. Nádia Félix.
Programação Orientada à Objetos
Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Orientação a Objetos: herança Professor: Sandro Rigo.
SNAPSHOT PADRÃO DE PROJETO.
Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo.
Java Kickstart, day 2 Semelhanças com linguagem C.
Aula Prática 4 Monitoria IP/CC (~if669).
Prof.: Bruno Rafael de Oliveira Rodrigues. Construtor é bloco declarado que é chamado no momento em que o Objeto é criado (instanciado). Todas as classes.
Coleções, Genéricos, Threads Marco Antonio. Collection Principais métodos da interface Collection.
Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Coleções em Java - Parte 2
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
Memento Grupo Angélica Teixeira Rodrigo Silva
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Bruno Inojosa MCP .NET Framework
Modificadores Programação II.
April 05 Prof. Ismael H. F. Santos - 1 Módulo III Padrões GOF: Memento Professores Eduardo Bezerra –
1 Design Pattern Double Checked Locking. 2 Design Pattern Apresenta soluções para problemas que ocorrem repetidamente em nosso ambiente computacional.
Organizando seu código Classes, pacotes, modificadores. Padrões.
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
Implementação Orientada a Objetos – Aula 04 Métodos, parâmetros e retorno Prof. Danielle Martin/Marcia Bissaco Universidade de Mogi das Cruzes
Padrões de Projeto de Criação Padrões de Projeto Orientados a Objetos Prof a. Danielle Martin Universidade de Mogi das Cruzes.
Noções de projeto orientado a objetos - camadas Prof. Gustavo Wagner (alterações) Prof. Tiago Massoni (Slides originais) Desenvolvimento de Sistemas FATEC-PB.
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

Kleinner Farias e Raphael do Vale Padrão de Projeto Memento Kleinner Farias e Raphael do Vale © LES/PUC-Rio

Agenda Intenção Motivação Aplicabilidade Estrutura Participantes Conseqüências Implementação Exemplo © LES/PUC-Rio

Intenção Sem violar o encapsulamento, capturar e externalizar um estado interno de um objeto, de maneira que o objeto possa ser restaurando para este estado mais tarde. © LES/PUC-Rio

Motivação Algumas vezes é necessário registrar o estado interno de um objeto. Implementação de mecanismos de checkpoints e de desfazer que permitem aos usuários retroceder de operações ou recuperar-se de erros. Trata-se de um objeto que armazena uma “instância” do estado interno de um objeto. © LES/PUC-Rio

Aplicabilidade Usado quando o estado de um objeto deve ser salvo de maneira que possa ser restaurado mais adiante. O uso de interface para o obtenção do estado de um objeto expõe detalhes da implementação que rompe o princípio de encapsulamento de OO. © LES/PUC-Rio

Estrutura © LES/PUC-Rio

Participantes Memento Originador Caretaker Armazena o estado interno do objeto; Protege contra acesso por objetos que não o originador. Originador Cria um memento contendo uma “instância” do estado interno corrente; Usa o memento para restaurar o seu estado interno; Caretaker É responsável pela custódia do memento; Nunca opera ou examina os conteúdos de um memento. © LES/PUC-Rio

Conseqüências Preservação das fronteiras de encapsulamento O padrão evita a exposição de informação que somente um originador deveria administrar. Ele simplifica o originador Coloca a carga de administração do armazenamento fora do Originador. O uso de mementos pode ser computacionalmente caro Se o Originador tiver que copiar grandes quantidades de informação para armazenar no memento. Ou se os clientes criam e devolvem mementos para o Originador com freqüência. © LES/PUC-Rio

Implementação class Originator { class Caretaker { private String state; public void set(String state) { this.state = state; } public Object saveToMemento() { return new Memento(state); public void restoreFromMemento(Object m) { if (m instanceof Memento) { Memento memento = (Memento)m; state = memento.getSavedState(); private static class Memento { public Memento(String stateToSave) { state = stateToSave; public String getSavedState() { return state; class Caretaker { private List savedStates = new ArrayList(); public void addMemento(Object m) { savedStates.add(m); } public Object getMemento(int index) { return savedStates.get(index); © LES/PUC-Rio

Implementação Armazenando mudanças incrementais Proteção dos dados Quando mementos são criados e passados de volta para o seu originador, em uma seqüência previsível, um Memento pode salvar somente a mudança incremental do estado interno do originador. Proteção dos dados É importante impor métodos de proteger os dados do memento. Somente o originador pode modificar ou obter os dados internos de um memento. © LES/PUC-Rio

Exemplo Controle de alterações de registros importantes Utilizando o padrão Memento, é possível guardar versões de registros importantes a cada modificação. Para cada usuário que modificar o registro, podemos armazenar em uma espécie de log o memento do registro e o usuário que o alterou. Assim é possível ter uma auditoria, verificando todas alterações feitas pelos usuários e permitindo “voltar atrás”. © LES/PUC-Rio