Padrões Comportamentais

Documentos relacionados
Vítor E. Silva Souza

Padrões GoF. Leonardo Gresta Paulino Murta

Especialização em web com interfaces ricas

Testes com Design Patterns

MDS II Aula 04. Concepção Requisitos Diagrama de Casos de Uso (Use Cases)

Curso - Padrões de Projeto Módulo 1: Introdução

Design Patterns. Viviane Torres da Silva

Análise e Projeto Orientados por Objetos

J930. Padrões. Projeto. Introdução. argonavis.com.br. Helder da Rocha

1Introdução Helder da Rocha

CRIAÇÃO DE TABELAS NO ACCESS. Criação de Tabelas no Access

Programação com Objectos

Design Pattern Implementation in Java and AspectJ

Porquê PADRÕES? - Exemplo

Padrões Comportamentais

Padrões de Projeto. Factory Method

Engenharia de Software II

UNIVERSIDADE FEDERAL DA BAHIA ESCOLA POLITÉCNICA DEPARTAMENTO DE ENGENHARIA QUÍMICA ENG 008 Fenômenos de Transporte I A Profª Fátima Lopes

PLANEJAMENTO ESTRATÉGICO

PADRÕES DE PROJETO FAÇADE, FLYWEIGHT E VISITOR

Modulo II Padrões GRASP

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens

Programação Orientada a Objetos. Padrões de Criação

Programação WEB. Prof. André Gustavo Duarte de Almeida www3.ifrn.edu.br/~andrealmeida. Aula II jquery UI

Padrões de Projeto de Software Orientado a Objetos

,QVWDODomR. Dê um duplo clique para abrir o Meu Computador. Dê um duplo clique para abrir o Painel de Controle. Para Adicionar ou Remover programas

Análise e Projeto Orientados por Objetos

Revisão Diagrama de Caso de Uso. Rodolfo Adamshuk Silva 30/08/2013

Fundamentos de Bancos de Dados 3 a Prova Caderno de Questões

Princípios e Conceitos de Desenho de Software. Projeto de Sistemas de Software Prof. Rodrigo Ribeiro

Análise de Requisitos

Padrões de Projeto. Prof. Jefersson Alex dos Santos

2 Workshop processamento de artigos em serviços de saúde Recolhimento de artigos esterilizados: é possível evitar?

Padrões de Desenho Engenharia de Software

Programação Orientada a Objetos Padrões de Projeto (design patterns) Fernando Vanini IC - UNICAMP

Prof.ª Esp. Talita Pagani

Inteligência Artificial

ENGENHARIA DE SOFTWARE

FERRAMENTAS DA QUALIDADE FOLHA DE VERIFICAÇÃO

DOCUMENTO DE REQUISITO DE SOFTWARE

O que é um banco de dados? Banco de Dados. Banco de dados

Aula Prática 1 - Gerador Van de Graaff e interação entre corpos carregados

Período ATIVIDADE OBJETIVO Responsabilidade Local

Projeto Manutenção SAP Web e Portal TRT

Modelo Lógico: Tabelas, Chaves Primárias e Estrangeiras

Laboratório nº 5 FUNCIONAMENTO DO ADDRESS RESOLUTION PROTOCOL

Objetivo do Portal da Gestão Escolar

Prova de Fundamentos de Bancos de Dados 1 a Prova

Tutorial de utilização do Sistema de Abertura de Chamado Sumário

Disciplina: Unidade III: Prof.: Período:

Programação Avançada. Padrões de Projeto de Software. Fonte: Oswaldo B. Peres e K19 Treinamentos

Os Registros na Pesquisa. Christiane Zubler

Fundamentos de Programação. Diagrama de blocos

Patologia e recuperação de obras ENG /1

Apresentação dos Requisitos Do Edital Inmetro nº 01/2011

Resolução da Lista de Exercício 6

Redes de Computadores

Apontamento de Despesas

MODELAGENS. Modelagem Estratégica

ORIENTAÇÕES TRABALHO EM EQUIPE. Trabalho em Equipe. Negociação

Análise Qualitativa no Gerenciamento de Riscos de Projetos

Modelo Entidade Relacionamento (MER) Professor : Esp. Hiarly Alves

Arquitetura de Computadores Sistemas Operacionais II

PADRÕES DE PROJETO. Cleviton Monteiro

Padrões. Identificando padrões

Programação Orientada a Objetos SANTOS, Rafael

DIMENSÕES DE PESQUISA EM ENGENHARIA DE SOFTWARE

Eduardo Bezerra. Editora Campus/Elsevier

Arquitecturas de Software Enunciado de Projecto

HEMOVIDA (CICLO DO SANGUE - Gerenciamento de estoque para grandes eventos)

Criar e formatar relatórios

Descubra as novas funcionalidades com Office 365 My I-365, uma nova forma de colaborar Ipsos

Política de uso. AR SSL Corporativa. DAGSer Diretoria Adjunta de Gestão de Serviços. Versão 1.0

Aula 1 Restrições temporais: origem e caracterização

Algoritmos e Programação II

Sérgio Luisir Díscola Junior

SISTEMAS DISTRIBUÍDOS

MENSAGEM DO PRESIDENTE

PODER JUDICIÁRIO JUSTIÇA DO TRABALHO CONSELHO SUPERIOR DA JUSTIÇA DO TRABALHO

MANUAL HAE - WEB MANUAL WEB HAE

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação

GIL, Antonio Carlos. Como elaborar projetos de pesquisa. São Paulo, Editora Atlas,

INSTITUTO POLITÉCNICO DE COIMBRA INSTITUTO SUPERIOR DE CONTABILIDADE E ADMINISTRAÇÃO (ISCA)

Processo de Desenvolvimento de Software

COMO ELABORAR UM CURRÍCULO

Introdução. Modelo de um Sistema de Comunicação

Adotada Total / Parcial. Fundamento da não adoção. Recomendação. Não adotada. 1. Princípios Gerais

Testes em Laboratório - Análise

Padrões de Projeto. Bibliografia. Nomenclatura

CENTRO UNIVERSITÁRIO ANHANGUERA DE SANTO ANDRÉ. Ana Paula S. Valera TRAJETÓRIAS DO ENVELHECIMENTO

Sistemas Operacionais. Rodrigo Rubira Branco

MN03 - MANUAL DE CONFIGURAÇÃO DA VPN PARA ALUNOS

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

Arquitetura TCP/IP. Apresentado por: Ricardo Quintão

Transcrição:

Padrões Comportamentais Parte 2 Soluções Reutilizáveis de Software Orientado a Objetos Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)

Padrões de Projeto Comportamentais 1. Chain of Responsibility 2. Command 3. Interpreter 4. Iterator 5. Mediator 6. Memento 7. Observer 8. State 9. Strategy 10. Template Method 11. Visitor

Mediator

Intenção Definir um objeto que encapsula a forma como um conjunto de objetos interage O Mediator promove o acoplamento fraco ao evitar que os objetos se refiram uns aos outros explicitamente e permite variar suas interações independentemente

Motivação O projeto orientado a objetos encoraja a distribuição de comportamento entre vários objetos Pode resultar em muitas conexões entre objetos Cada objeto tem o conhecimento muitos objetos Como exemplo, considere a implementação de caixas de diálogo em uma GUI Uma caixa de diálogo sua uma janela pra apresentar uma coleção de componentes botões, menus, entradas, etc. Frequentemente existe dependência entre os componentes o a caixa de diálogo

Motivação Continuando... Por exemplo, um botão pode se ficar desabilitado enquanto um campo de entrada permanecer vazio Diferentes caixas de diálogo terão diferentes dependências entre componentes Embora diálogos exibam os mesmos componentes, não podem reutilizar as classes pois, devem ser customizadas para refletir as dependências específicas Esse problema poderia ser evitado encapsulando o comportamento coletivo num objeto Mediator

Aplicabilidade Utilize o padrão Mediator quando: 1. um conjunto de objetos se comunica de maneiras bemdefinidas, porém complexas interdependência 2. a reutilização de um objeto é difícil porque ele referencia e se comunica com muitos outros objetos 3. um comportamento que está distribuído entre várias classes deveria ser customizável, ou adaptável, sem excessiva especialização em subclasses

Estrutura

Estrutura

Exemplo/Participantes

Exemplo/Participantes

Exemplo/Participantes 1. Mediator (DialogDirector) Define a interface para comunicação com os Colleagues 2. ConcreteMediator (FontDialogDirector) Implementa o comportamento cooperativo coordenação dos objetos Colleagues 3. Classes Colleague (ListBox, EntryField) Cada um conhece o seu objeto Mediator Sempre que necessita se comunicar um Colleague, o faz através do Mediator

Consequências 1. Ele limita o uso de subclasses 2. Ele desacopla classes colegas 3. Ele simplifica o protocolo dos objetos 4. Ele abstrai a maneira como os objetos cooperam 5. Ele centraliza o controle

Memento Também conhecido como Token

Intenção Sem violar o encapsulamento, capturar e externalizar um estado interno de um objeto, de maneira que o objeto possa ser restaurado para este estado mais tarde

Motivação Algumas vezes é necessário registrar o estado de um objeto implementação de checkpoints As informações de estado devem ser salvas em algum lugar, que modo que seja possível restaurar estados prévios de um objeto Problema: possível violação do encapsulamento

Motivação Exemplo: considere um editor gráfico que suporta a conectividade entre objetos um usuário pode conectar dois retângulos com uma linha, os quais permanecem conectados quando movidos manter relações de conectividade entre objetos pode ser feita por meio de um sistema de solução de restrições A interface desse ContraintSolver pode ser insuficiente ara permitir a reversão precisa dos seus efeitos sobre outros objetos Esse problema pode ser resolvido com o padrão Memento, o qual armazena um instantâneo do estado interno de outro objeto originador do Memento

Aplicabilidade Utilize o padrão Memento quando: 1. Um instantâneo (de alguma porção) do estado de um objeto deve ser salvo de maneira que possa ser restaurado para esse estado mais tarde 2. Uma interface direta para obtenção do estado exporia detalhes de implementação e romperia o encapsulamento do objeto

Estrutura

Exemplo/Participantes 1. Memento (SolverState) Armazena o estado interno do objeto Originator Protege contra acesso por objetos que não o originador O Caretaker vê uma interface restrita do Memento 2. Originator (ConstraintSolver) Cria um Memento contendo um instantâneo do seu estado interno corrente Usa o Memento para restaurar o seu estado interno 3. Caretaker (undo mechanism) Responsável pela custódia do Memento Nunca opera ou examina os conteúdos de um Memento

Consequências 1. Preservação das fronteiras de encapsulamento 2. Ele simplifica o originador 3. O uso de Mementos pode ser computacionalmente caro 4. Definição de interfaces restritas e largas 5. Custos ocultos na custódia de Mementos

Observer Também conhecido como Publish-Subscribe

Intenção Definir uma dependência um-para-muitos entre objetos, de maneira que quando um objeto muda de estado todos os seus dependentes são notificados e atualizados automaticamente

Motivação Um efeito colateral comum da modularização de um sistema é a necessidade de manter a consistência entre os objetos relacionados Com baixo acoplamento e alta reusabilidade Exemplo: dado um framework para construção de interfaces gráficas com o usuário Separam os aspectos de apresentação da interface dos dados da aplicação As classes que definem os dados da aplicação e apresentação podem ser reutilizadas independentemente

Motivação Continuando... Mas, uma planilha pode trabalhar em conjunto com um gráfico de barras onde a mudança do primeiro pode ser refletida no segundo Continuando independentes O padrão Observer descreve como estabelecer esses relacionamentos Objetos observadores se inscrevem para observar um dado objeto e são notificados quando mudanças de estado ocorrem

Aplicabilidade Utilizaremos o padrão Observer quando: 1. uma abstração tem dois aspectos, um dependente de outro, mas encapsulados em objetos separados (independentes) 2. uma mudança em um objeto exige mudanças em outros, e você não sabe quantos objetos necessitam ser mudados 3. um objeto deveria ser capaz de notificar outros objetos sem fazer hipóteses, ou usar informações, de que objetos são estes

Estrutura

Participantes 1. Subject Conhece os seus observadores (podem ser vários) Fornece uma interface para acrescentar e remover objetos para associar e desassociar objetos observadores 2. Observer Define uma interface de atualização para objetos que deveriam ser notificados sobre mudanças em um dado objeto (observado)

Participantes 1. ConcreteSubject Armazena estados de interesse para objetos ConcreteObserver Envia uma notificação para os seus observadores quando seu estado muda 2. ConcreteObserver Mantém uma referência para um objeto ConcreteSubject Armazena estados que deveriam permanecer consistentes com os do Subject Implementa a interface de atualização de Observer, para manter o seu estado consistente com o do Subject

Consequências 1. Permite a variação de observadores e observados de forma independente 2. Acoplamento abstrato entre Subject e Observer 3. Suporte para a comunicação em broadcast 4. Atualizações inesperadas ou desnecessárias