Padrão de Projeto Chain of Responsability e Template Method

Slides:



Advertisements
Apresentações semelhantes
Soluções elegantes para problemas recorrentes
Advertisements

PADRÃO CHAIN OF RESPONSIBILITY
PADRÕES DE PROJETO..
Classes Abstratas e Interfaces
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 Trabalho de Padrões de Projeto
Factory Method Projeto de Sistemas de Software
Projeto de Sistemas de Software
Projeto de Sistemas de Software Sérgio Luiz Ruivace Cerqueira
Kleinner Farias e Raphael do Vale
Template Method Projeto de Sistemas de Software. © LES/PUC-Rio Template Method Motivação.
Orientação a Objetos: Modificador Final para Métodos e Classes
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ PROGRAMA DE PÓS-GRADUAÇÃO EM INFORMÁTICA APLICADA DISCIPLINA DE SISTEMA ORIENTADOS A OBJETOS PROGRAMAÇÃO ORIENTADA.
Refactoring de Programas Java
Template Method Intenção: definir o esqueleto de um algoritmo em uma operação, postergando (delegando) a definição de alguns passos desse algoritmo para.
Chain of Responsibility
Walfredo Cirne walfredo.dsc.ufpb.br
Trabalho de Conclusão de Curso Moisés Alves Carneiro Filho
Padrão de Construção Factory Method
UMA ABORDAGEM SOBRE ORIENTAÇÃO A OBJETOS!
Métodos Programação II
Linguagem de Programação III
B ANCO DE D ADOS E JDBC Profa. Msc. Cintia Carvalho Oliveira Mestre em Ciência da Computação – UFU Bacharel em Ciência da Computação - UFJF 1.
Padrão de Projeto Builder
Introdução a Engenharia de Software
Curso de extensão em Desenvolvimento Web
Strategy e Template Method
Tipos Agregados Homogêneos e Listas
C# Sharp Shooters.NET Universidade Federal de Pernambuco Centro de Informática Recife, 23/09/2002 Autor: Marden Menezes Costa Propriedades.
JAVA Orientação a Objetos
Chain of Responsibility
Linguagens Orientadas a Objeto
Padrão de Projeto Iterator
Orientação a Objetos e Java Graduação em Ciência da Computação
LEONARDO SIMAS JUSSI BARROS WESLLEY VIEIRA Flyweight.
Profa. Cintia Carvalho Oliveira
Criação do Create, Read, List, Update e Delete Desenvolvimento de Aplicações Web PROFA. MSC. CINTIA CARVALHO OLIVEIRA DOUTORANDA EM CIÊNCIA DA COMPUTAÇÃO.
Configuração do Ambiente de programação
Aula Prática 4 Monitoria IP/CC (~if669).
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota (com material da Qualiti Software Process)
Decorator POO - Avançado.
Exceções Suzana Fragoso (smpf) Adaptado do material de Guilherme Carvalho (gvc)
Trabalho Final de Padrões de Projeto
Gerador de Tabela-Verdade
Coleções em Java - Parte 2
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Memento Grupo Angélica Teixeira Rodrigo Silva
Padrões de Projeto Abstract Factory.
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
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Factory.
POO - I PROF.: JEAN CARLO MENDES
April 05 Prof. Ismael H. F. Santos - 1 Módulo III Padrões GOF: Iterator Professores Eduardo Bezerra –
JAVA – Fila ATAI.
1 Design Patterns Israel Rios. 2 Origens A idéia de padrões de projeto não teve origem na ciência da computação Christopher Alexander A Pattern Language:
Padrões de Projetos Orientados a Objetos I Wolley W. Silva.
PADROES DE PROJETO PROF. OSIEL MARLON. PADRÕES DE PROJETO INTRODUÇÃO Padrões de projeto têm emergido como uma das mais promissoras abordagens para a melhoria.
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
Array e ArrayList LPOO – 01/09/14.
Padrões de Projeto. O que são?  Soluções provenientes de diversos projetos e utilizados por diversos programadores;  Documentados em catálogos como.
Aula 7 – Padrão Abstract Factory
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
Padrões de Projeto de Criação Padrões de Projeto Orientados a Objetos Prof a. Danielle Martin Universidade de Mogi das Cruzes.
1 Introdução aos Padrões de Projetos Créditos: Prof. Fabio Kon - IME/USP Adaptações: Prof. Nécio de Lima Veras.
Introdução a Padrões de Projeto Padrões de Projeto Orientado a Objetos Profa. Danielle Martin Universidade de Mogi das Cruzes.
Minicurso Java Básico Ruddá Beltrão | Cristian Costa.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Aplicativos para Web Collections Prof. Odair
Transcrição da apresentação:

Padrão de Projeto Chain of Responsability e Template Method Profa. Cintia Carvalho Oliveira Doutoranda em Ciência da Computação - UFU Mestre em Ciência da Computação – UFU Bacharel em Ciência da Computação - UFJF

Problema Uma aplicação e-commerce precisa se comunicar com vários bancos diferentes para prover mais possibilidades de pagamentos. Podemos usar uma estrutura de decisão para selecionar ou métodos fábrica. Poderíamos criar estratégias diferentes para cada banco e escolher em tempo de execução. Em todas ainda utilizamos estruturas de decisão. O Chain of reponsability promete acabar com essas estruturas.

Chain of Responsability “Evitar o acoplamento do remetente de uma solicitação ao seu receptor, ao dar a mais de um objeto a oportunidade de tratar a solicitação. Encadear os objetos receptores, passando a solicitação ao longo da cadeia até que um objeto a trate.”

Chain of Responsability Implementar a cadeia de responsabilidades A classe possui um identificador e uma referência para o próximo objeto da corrente.

Chain of Responsability

Chain of Responsability Verifica se o banco atual pode fazer o pagamento, comparando com o identificador do banco. Se o elemento não pode responder à solicitação ele repassa ao próximo da lista. Se nenhum puder responder é disparada uma exceção;

Chain of Responsability Vamos definir a estrutura da cadeia de responsabilidades.

Chain of Responsability Vamos definir a cadeia

Chain of Responsability

Template Method

Template Method Queremos reproduzir a lista de músicas da seguinte maneira: Ordenado por nome da música Ordenado por nome do Autor Ordenado por ano Ordenado por estrela Uma ideia é usar o Strategy e implementar uma classe que define o método de reprodução. Mas o método de reprodução é p mesmo a diferença é a criação do playlist.

Template Method “Definir o esqueleto de um algoritmo em uma operação, postergando alguns passos para as subclasses. Template Method permite que subclasses redefinam certos passos de um algoritmo sem mudar a estrutura do mesmo” Precisamos definir como a playlist será ordenada mas só saberemos em tempo de execução.

Template Method public class MusicaMP3 { String nome; String autor; String ano; int estrelas; public MusicaMP3(String nome, String autor, String ano, int estrela) { this.nome = nome; this.autor = autor; this.ano = ano; this.estrelas = estrela; } }

Template Method public abstract class OrdenadorTemplate {     public abstract boolean isPrimeiro(MusicaMP3 musica1, MusicaMP3 musica2);       public ArrayList<MusicaMP3> ordenarMusica(ArrayList<MusicaMP3> lista) {         ArrayList<MusicaMP3> novaLista = new ArrayList<MusicaMP3>();         for (MusicaMP3 musicaMP3 : lista) {             novaLista.add(musicaMP3);         }         for (int i = 0; i < novaLista.size(); i++) {             for (int j = i; j < novaLista.size(); j++) {                 if (!isPrimeiro(novaLista.get(i), novaLista.get(j))) {                     MusicaMP3 temp = novaLista.get(j);                     novaLista.set(j, novaLista.get(i));                     novaLista.set(i, temp);                 }             }         return novaLista;     } }

Bibliografia http://www.inf.ufg.br/~fabrizzio/web/java/aula7.pdf http://brizeno.wordpress.com/category/padroes-de-projeto/chain-of- responsibility/ GAMMA, Erich et al. Padrões de Projeto: Soluções reutilizáveis de software orientado a objetos. http://brizeno.wordpress.com/category/padroes-de-projeto/template- method/