A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Padrão de Projeto Memento Projeto de Sistemas de Software Manoel Teixeira de Abreu Netto Thiago Pinheiro de Araújo.

Apresentações semelhantes


Apresentação em tema: "Padrão de Projeto Memento Projeto de Sistemas de Software Manoel Teixeira de Abreu Netto Thiago Pinheiro de Araújo."— Transcrição da apresentação:

1 Padrão de Projeto Memento Projeto de Sistemas de Software Manoel Teixeira de Abreu Netto Thiago Pinheiro de Araújo

2 © LES/PUC-Rio Memento Propósito –Capturar e armazenar externamente o estado de um objeto, de modo que o estado anterior deste objeto possa ser posteriormente restaurado –Sem violar encapsulamento

3 © LES/PUC-Rio Memento Motivação –Armazenar o histórico do estado de um objeto. –Fornecer funcionalidade de restauração. –Exemplos: Armazenamento de estados a serem restaurados, por exemplo, em um banco de dados. Undo (IHC), caso você queria manter uma forma de desfazer ações realizadas no objeto, é possível salvando tais estados a cada modificaçao, isto pode ser feito em conjunto com o padrão Command [2] Instruções passo-a-passo (IHC), fornecer a possibilidade do usuário retornar a um passo. Possivelmente um passo realizado altera o estado de um ou mais objetos. O padrão Memento permite que o estado anterior do objeto seja recuperado ao retornar um passo sem que o encapsulamento seja violado [2]

4 © LES/PUC-Rio Memento Aplicabilidade –De forma geral, onde existe a necessidade de salvar o estado de um objeto, ou parte dele, para possivelmente restaurar depois –Onde uma interface de obtenção do estado do objeto comprometeria seu encapsulamento

5 © LES/PUC-Rio Memento Estrutura

6 © LES/PUC-Rio Memento Participantes –Memento Guarda um estado do objeto Originator Protege o encapsulamento do estado, não permitindo que outros objetos além do Originator tenham acesso –Originator Cria um Memento contendo a representação do seu estado atual Usa o Memento para restaurar seu estado –Caretaker É responsável por armazenar os Mementos gerados por um Originator Não é capaz de interpretar o estado armazenado no Memento

7 © LES/PUC-Rio Memento Colaborações –O Caretaker pede ao Originator o memento do seu estado atual. –Caso seja necessário restaurar o estado, o Caretaker pede ao Originator que carregue o estado passado como parâmetro.

8 © LES/PUC-Rio Memento Conseqüências –Vantagens: O estado do Originator é guardado fora dele sem a perda do encapsulamento. O Originator é simplificado por não ter a responsabilidade de gerenciamento de estados anteriores. –Desvantagens: O uso de mementos pode ser uma solução cara, dependendo do tamanho e do número de estados a serem salvos. O Caretaker ganha a responsabilidade de deleção dos mementos armazenados. Em determinadas linguagens pode ser difícil garantir que apenas o Originator será capaz de acessar o memento. Ex: –Em C++ pode-se fazer um cast para void *. –Em Java pode-se fazer um cast para Object.

9 Memento © LES/PUC-Rio

10 Memento Bibliografia –[1] Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software, 2st edition, Addison-Wesley Professional Computing Series, –[2] SILVA, A. C. DA ; SILVA, Júnia Coutinho Anacleto ; PENTEADO, R. A. D. ; SILVA, S. R. P. DA. Relacionamento de Padrões de Engenharia de Software e de Interação Humano- Computador para o Desenvolvimento de Sistemas Interativos. In: SugarLoaf PLoP V CONFERÊNCIA LATINO-AMERICANA EM LINGUAGENS DE PADRÕES PARA PROGRAMAÇÃO, 2005, Campos do Jordão. Anais da Conferência Latino-Americana em Linguagens de Padrões para Programação, 2005.

11 Fim!


Carregar ppt "Padrão de Projeto Memento Projeto de Sistemas de Software Manoel Teixeira de Abreu Netto Thiago Pinheiro de Araújo."

Apresentações semelhantes


Anúncios Google