Padrões de Projeto de Software

Documentos relacionados
T ó p i c o s A v a n ç a d o s e m L i n g u a g e m d e P r o g r a m a ç ã o. Padrões de Projeto. Prof. Alexandre Vidal. DEINF-UFMA Janeiro de 2007

Padrões de Projeto de Software

Strategy e Template Method. Professor: Hyggo Almeida

LEIC-T LERC MEIC-T 2011/2012 1º Semestre Programação com Objetos 2012/01/07 11h00m 3/10

Padrões de Projeto de Software

Padrões de Projeto de Software

Creational Patterns Factory method

Definição. Em POO, a abstração é o processo de esconder os detalhes de implementação de uma aplicação.

Programação Orientada a Objetos. Padrões Comportamentais

Capítulo 3. Framework 28

Tópicos da Aula. POO e Padrões de Projetos. Considere três classes... Reuso de Classes. Locadora de DVD. Sistema Acadêmico

Padrões GoF Strategy, Observer, Singleton, Abstract Factory e outros...

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos 2 Prof. Fabiano Dorça. Padrões de Projeto.

Abstract Factory. Prover uma interface para criar uma família de objetos relacionados ou dependentes sem especificar suas classes concretas

Computação II Orientação a Objetos

Java para Desktop. Programação Orientada à Objetos 2 JSE

Classe Abstrata e Interface

Tópicos Avançados em Linguagem de Programação. Builder. Builder. Builder. Classificação: Padrões de Projeto. Builder Pattern.

Abstract Factory. Edeyson Andrade Gomes

Linguagem de Programação III

INF011 Padrões de Projeto. 04 Builder

INF011 Padrões de Projeto. 05 Factory Method

" ##$#$!% # & #$#$ !!!!"!

Técnicas de Reutilização. Reutilização em Programação Orientada a Objetos. Considere três classes... Reuso de Classes.

Mas o que é mesmo Padrão de Projeto?

Computação II Orientação a Objetos

Linguagem de Programação III

Introdução a Padrões, GRASP. Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

Frameworks. Viviane Torres da Silva

INF011 Padrões de Projeto. 10 Bridge

Desenho de Software. Sumário

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

Padrões de Projeto. B r i dge. B r i d ge. T ó p i c o s A v a n ç a d o s e m L i n g u a g e m d e P r o g r a m a ç ã o. Classificação: Intenção:

Roni Fabio Banaszewski UTFPR Universidade Tecnológica Federal do Paraná

Padrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões

Padrões de Projeto. Factory Method

Padrões de Projeto. Abstract Factory

Computação II (MAB 225)

Padrões Fábrica. Simple Factory Factory Method

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Factory Pattern. SISMO - Sistemas e Mobilidade Junho de Departamento de Informática / UFMA

As classes Formatador e ElementosAFormatar

Padrões de Projeto. Factory Method

Introdução aos Padrões de Projeto. Sylvio Barbon Jr

b) Adapter, Bridge e Composite. c) Builder, Prototype e Singleton. d) Façade, Command e Decorator. e) Factory Method, Interpreter e Template Method.

Módulo III Padrões GOF

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

INF011 Padrões de Projeto. 03 Abstract Factory

SME Introdução à Programação de Computadores Primeiro semestre de Trabalho: jogo Semáforo

Classes e Objetos. Sintaxe de classe em Java

SOFTWARE REQUIREMENTS

Resumo de TCC: MAGIC: Um framework para jogos de cartas. Ademir Coelho

Programação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc.

UNIDADE 5 Aplicação dos Conceitos de Orientação a Objetos

Computação Paralela. Conceitos de Programação Orientada ao Objecto. João Luís Ferreira Sobral Departamento do Informática Universidade do Minho

Programação de Computadores - I. Profª Beatriz Profº Israel

Padrões Arquiteturais. Silvia Regina Vergilio

Conceitos de Programação Orientada a Objetos

Arquitecturas Paralelas I Computação Paralela em Larga Escala. Conceitos de Programação Orientada ao Objecto

Padrões de Projeto. Parte 1. Prof. Fellipe Aleixo

Programação com Objectos 1º Teste Tipo 1º Semestre (90 minutos)

Computação II Orientação a Objetos

Padrões Comportamentais

Padrões de Projeto de Software

Herança Tiago Eugenio de Melo

UNIVERSIDADE PAULISTA - UNIP ICET INSTITUTO DE CIÊNCIAS EXATAS E TECNOLÓGIA

Singleton e Adapter. Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

ARQUITETURA E DESENHO

Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho

PADRÕES DE PROJETO: DESIGN PATTERNS

DESENVOLVIMENTO DO JOGO DE DAMAS UTILIZANDO A BIBLIOTECA ALLEGRO

INF011 Padrões de Projeto. 11 Composite

Padrões de Projeto de Software Orientado a Objetos

Disciplina: POO Padrões de Projeto Lista de Exercícios I: Revisão dos conceitos de OO Data de entrega: 31/10

Programação por Objectos Introdução. Introdução 1/18

Microsoft Faculty Connection

Fundamentos de Orientação à objetos

Programação Orientada a Objetos para Redes de Computadores

4 Arquitetura. Figura 1 Relacionamento entre as entidades do sistema de comentários. Comentário Tópico Categoria

Universidade Federal de Uberlândia Faculdade de Computação Prof. Fabiano Dorça. Introdução. Padrões de projeto

Computação II Orientação a Objetos

DESIGN PATTERNS. Como evitar problemas no futuro

Programação Orientada a Objetos

INF011 Padrões de Projeto Introdução

LÓGICA DE PROGRAMAÇÃO (JAVA) POLIMORFISMO. Professor Carlos Muniz

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

Orientação a Objetos AULA 09

Programação com Objectos 2º Teste Tipo 1º Semestre (120 minutos)

TCC - LagarLottery. Desenvolvimento de um software para jogadores de loterias. Aluno: Euclides Pinheiro de Melo

Padrões de Design. Padrões de Design. Abstract Factory. Padrões de Design. Padrões de Design Abstract Factory. Abstract Factory.

Transcrição:

Padrões de Projeto de Software Template Method Paulo Gomide Departamento de Ciência da Computação Universidade de Itaúna

Sumary Template Method Definição, Motivação e Aplicabilidade Estrutura, Elementos do Padrão e Colaborações Consequências Código de Exemplo Padrões Relacionados

Template Method Definição Define o esqueleto do algoritmo através de uma operação (abstrata), deixando que subclasses refinem o restante do algoritmo (comportamento concreto); Permitem que subclasses redefinam certos aspectos de um algoritmo sem modificar a estrutura do algoritmo.

Motivação Problema Específico Considere um framework para jogos de tabuleiro (Game Center, Game Store, etc.); O ideal é que exista uma estrutura comum entre os jogos a fim de agilizar o desenvolvimento de novos jogos; A classe base Jogo pode apresentar operações comuns a todos os jogos: inicializarjogo(), fazerjogada(), fimjogo() e imprimirganhador().

Motivação Solução Template Method: a classe base define métodos abstratos que são comuns aos vários jogos a serem implementados, deixando as subclasses definir as particularidades de cada um; Um exemplo de Template Method neste caso pode ser jogarpartida(); Esse método inicializa a partida e enquanto o jogo não termina um jogador faz uma jogada. No final o vencedor é impresso; Dessa forma é possível criar diversos jogos diferentes reutilizando o algoritmo de jogar uma partida.

Aplicabilidade Requisitos para se Aplicar o Padrão O uso do padrão Template Method é indicado quando: A estrutura fixa de um algoritmo puder ser definida pela superclasse (implementar uma só vez) deixando as subclasses preencher as partes que podem variar (frameworks); Deseja-se implementar as partes invariantes de um algoritmo uma só vez e deixar para as subclasses a implementação do comportamento que pode variar; Classes contem código replicado, e deseja-se fundir o código repetido e deixar as subclasses implementarem as variações; Há a necessidade de controlar extensões de subclasses.

Estrutura do Problema Geral

Participantes do Padrão AbstractClass Definem métodos abstratos que as subclasses concretas implementam; Implementa um método concreto template que contem o esqueleto de um algoritmo; Além disso o método template invoca os métodos necessários para a execução do algoritmo, inclusive outros métodos abstratos que são implementados nas subclasses concretas.

Participantes do Padrão ConcreteClass Implementa os métodos abstratos necessários para a execução do método template; Redefine métodos da AbstractClass.

Colaborações ConcreteClass faz uma chamada à AbstractClass, que contem o esqueleto do algoritmo, após isso o templatemethod() faz as devidas chamadas à ConcreteClass.

Conseqüências Vantagens 1. Facilita a reutilização de código com a definição da parte invariante; 2. Inversão de Controle (IoC): Superclasse Subclasse. Desvantagens 1. Os desenvolvedores são obrigados a saber quais classes devem e quais podem ser redefinidas.

Código de Exemplo Código de Exemplo O código exemplo a seguir mostra como a superclasse pode forçar uma invariância às subclasses; Temos uma classe View para vizualizar uma imagem na tela. Ela força que suas subclasses desenhem sobre uma figura só quando ela se tona o foco ; Com isso a imagem pode requerer algum estado de desenho específico (cores e fontes) para ser configurado corretamente.

Código de Exemplo Podemos usar métodos templates para criar esse estado: DoDisplay; View define duas operações concretas, SetFocus e ResetFocus, que configura e limpa o estado de desenho, respectivamente; A operação gancho DoDisplay realiza o desenho real; Display chama SetFocus antes DoDisplay para configurar o estado de desenho e ResetFocus depois de liberar o estado do desenho.

Código de Exemplo Para manter a invariante, os clientes do View sempre fazem requisições a Display, e as subclasses de View sempre sobrecarregam DoDisplay. DoDisplay não faz nada em View. E suas subclasses fazem a sobrecarga para adicionar o seu comportamento de desenho específico.

Padrões Relacionados Factory Method São freqüentemente usados por Template Methods, mas esses não tem responsabilidade de definir parte variantes e invariantes; No problema de motivação, o Template Method JogarPartida pode chamar um Factory Method DoJogarPartida, por exemplo.

Padrões Relacionados Strategy Template Method usam herança para variar partes de um algoritmo; Strategy usam delegação para variar ou definir possibilidade de um algoritmo inteiro.

Obrigado pela atenção! Dúvidas?