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.

Slides:



Advertisements
Apresentações semelhantes
Análise e Projeto Orientado a Objetos
Advertisements

PADRÕES DE PROJETO..
Java – Classes Abstratas
Algoritmos e Estrutura de Dados I
Projeto de Sistemas de Software Fernando de Freitas Silva
Projeto de Sistemas de Software Fernando de Freitas Silva
Projeto de Sistemas de Software(PSS) Baldoino F. dos S. Neto
Projeto de Sistemas de Software Sérgio Luiz Ruivace Cerqueira
Strategy Projeto de Sistemas de Software
Design Patterns Interpreter
Template Method Projeto de Sistemas de Software. © LES/PUC-Rio Template Method Motivação.
Projeto de Sistemas de Software Leandra Mara da Silva
Modelagem Orientada a Objetos
1 Orientação a Objetos: Herança Alcides Calsavara.
Iniciação ao Java – Márcio F. Campos
Refatorações Experiência é aquela coisa maravilhosa que permite que você reconheça um erro tão logo o cometa novamente F.P. Jones.
1 Introdução aos padrões de projeto (GoF) Conceitos preliminares –Mecanismos de herança –Princípio de Substituição de Liskov –Acoplamento concreto x Acoplamento.
Abstract Factory Intenção: fornecer uma interface comum para a criação de famílias de objetos relacionados ou dependentes, sem especificar suas classes.
Eduardo Bezerra Padrões GoF (State) Eduardo Bezerra
Padrões GoF - Strategy.
Eduardo Bezerra Padrões GoF Eduardo Bezerra
Padrões GoF – Factory Method
Alexandre Parra Site: Os Pilares da OO em Java Alexandre Parra Site:
Linguagem de Programação II
Noções de Estrutura de Dados Logica de Programação
Padrões - introdução O que é um padrão?
Métodos Programação II 1 Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre Classes Abstractas.
Padrão de Projeto Chain of Responsability e Template Method
Strategy e Template Method
Princípios de Orientação à Objetos
Aula prática 13 Orientação a Objetos – C++ Parte 1
Aula Prática If669 – Introdução à Programação
Nazareno Andrade (baseado no material de Hyggo Almeida)
Padrões de projeto detalhados Factory Method, Abstract Factory
Singleton e Adapter Professor: Nazareno Andrade
Padrão de Projeto Visitor
Programação Orientada à Objetos
Equipe: Fernando Calheiros Flavia Leite Eduardo Wagner
Programação Orientada à Objetos
Princípios de Análise e Projeto Orientados a Objetos com UML
SISTEMAS DISTRIBUIDOS Aula 4
Filter Design Pattern.
Análise e Desenvolvimento de Sistemas Guilhermi Vieira Dias.
Interfaces e classes abstratas. Conceitos de Orientação a Objeto.
Classes Abstratas P. O. O. Prof. Ângela e Grace.
Polimorfismo.
POO II JEAN CARLO MENDES
Decorator POO - Avançado.
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Trabalho Final de Padrões de Projeto
Classes Abstratas e Interfaces GX – Aula05 1.
Paradigmas de Programação –Aula 7 Lab 2 Professores: Eduardo Mantovani Fábio Paula Santos.
Herança Modelagem e Programação Orientada a Objetos
Factory.
Design Patterns A adoção dos padrões terá um efeito profundo e duradouro sobre a forma de escrevermos programas Ward Cunningham e Ralph Johnson.
1 Padrões: Bridge (p. 151) Objetivo: separar uma abstração de sua implementação Sinônimos: Handle/Body.
Jobson Ronan Padrões GoF Jobson Ronan
2 – Revisão de Programação Orientada a Objetos
2 – Revisão de Programação Orientada a Objetos
Padrões de Projetos Orientados a Objetos I Wolley W. Silva.
4 CONCEITOS BÁSICOS EM POO Dilvan Moreira.  Objetos  Classes  Herança  Polimorfismo Lembrando: 4 Conceitos Básicos.
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Continuação Modelagem Orientada a Objetos Técnico Subsequente.
Herança. É o compartilhamento de características entre classes com base em um relacionamento hierárquico. – Possibilita a derivação de tipos mais específicos.
Aula 5 – Padrão Decorator
Aula 6 – Padrão Factory Method
Padrões de Projeto Aula 9 – Padrão Adapter.
Aula 7 – Padrão Abstract Factory
Padrões de Projeto 2 – Revisão de Programação Orientada a Objetos.
Herança em Java Curso: Informática Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
Jean Carlo mendes
Transcrição da apresentação:

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 subclasses. Solução: Em uma classe X, definir a parte invariável do algoritmo em uma operação. Essa operação é denominada método template (template method). Nesta mesma operação, fazer chamadas a operações que representam a parte variável do algoritmo. Essas operações são denominadas operações gancho (hook operations). Essas operações gancho devem então ser implementadas pelas subclasses de X. using System; using System.Data; using System.Data.OleDb; // "AbstractClass" abstract class DataObject {   // Methods   abstract public void Connect();   abstract public void Select();   abstract public void Process();   abstract public void Disconnect();   // The "Template Method"   public void Run()   {     Connect();     Select();     Process();     Disconnect();   } } // "ConcreteClass" class CustomerDataObject : DataObject {   private string connectionString =           "provider=Microsoft.JET.OLEDB.4.0; "           + "data source=c:\\nwind.mdb";   private string commandString;   private DataSet dataSet;     // Methods   public override void Connect( )   {     // Nothing to do   }   public override void Select( )   {     commandString = "select CompanyName from Customers";     OleDbDataAdapter dataAdapter = new OleDbDataAdapter(                commandString, connectionString );     dataSet = new DataSet();     dataAdapter.Fill( dataSet, "Customers" );   }   public override void Process()   {     DataTable dataTable = dataSet.Tables["Customers"];     foreach( DataRow dataRow in dataTable.Rows )       Console.WriteLine( dataRow[ "CompanyName" ] );   }   public override void Disconnect()   {     // Nothing to do   } } /// <summary> ///  TemplateMethodApp test /// </summary> public class TemplateMethodApp {   public static void Main( string[] args )   {     CustomerDataObject c = new CustomerDataObject( );     c.Run();   } }

Template Method (estrutura) primitiveOperation1 e primitiveOperation2 são “hook operations”

Template Method (aplicabilidade) Quando queremos implementar partes invariáveis de um algoritmo e deixar que as subclasses implementem os comportamentos variáveis; Quando comportamentos comuns entre subclasses devem ser fatorados e localizados em uma superclasse comum. evitando assim duplicação de código; Quando queremos controlar a extensão das subclasses. Pode-se definir um template method que chama hook operations em pontos específicos, permitindo desse modo extensões apenas nesses pontos.

Template Method (conseqüências) Permite que as subclasses redefinam certos passos de um algoritmo sem mudar a estrutura desse algoritmo. i.e., Template Method usa herança para variar partes de um algoritmo. Um operação gancho não precisa necessariamente ser abstrata. Padrão importante no desenvolvimento de frameworks, pois fornece uma maneira de separar o comportamento variável do comportamento invariável em uma aplicação. Permitem a implementação do Princípio de Hollywood (ou inversão de controle): “não nos ligue; nós ligaremos pra você”. Inversão: uma superclasse chama operações de sua subclasse.