Análise e Projeto Orientados por Objetos



Documentos relacionados
Programação com Objectos

Testes com Design Patterns

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

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

Análise e Projeto Orientados por Objetos

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

1Introdução Helder da Rocha

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 GoF. Leonardo Gresta Paulino Murta

Análise e Projeto Orientados por Objetos

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

Uma Introdução aos Padrões de Projeto com Java. Roberto Willrich INE-CTC-UFSC

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

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

Prof.ª Esp. Talita Pagani

Padrões de Projeto de Software

Padrões de Desenho Engenharia de Software

Design Patterns. Viviane Torres da Silva

Eduardo Bezerra. Editora Campus/Elsevier

Padrões clássicos ou padrões GoF O livro "Design Patterns (1994) de Erich Gamma, John Vlissides, Ralph Jonhson e Richard Helm, descreve 23 padrões de

Padrões de Projeto de Software Orientado a Objetos

Análise e Projeto Orientados por Objetos

Mas o que é mesmo Padrão de Projeto?

Padrões de Projeto de Software

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

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 Comportamentais

PADRÕES DE PROJETO. Cleviton Monteiro

MÓDULO Modelagem de classes de projeto

Universidade Federal de Uberlândia Disciplina: POO2 Prof. Fabiano Dorça. Padrões de Projeto. Padrão Command

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

Técnicas de Programação II

Flexibilidade e Reusabilidade em Sistemas Orientados a Objetos - Uma Proposta para Implementação no EB

Especialização em web com interfaces ricas

Arquitectura de Sistemas de Software Mestrado em Engenharia Informática Licenciatura em Engenharia Informática e Computação

Design Patterns. Histórico e Fundamentos: Padrões do GoF Criacionais Estruturais Comportamentais. Fernando Anselmo

POO e suas Limitações Introdução POA AspectJ: Conceitos Básicos Exemplo: Tracing Padrões de Projeto e POA

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

Programação com Objectos Teste Teórico 04 de Janeiro de 2010, 09:00 (120 minutos)

Análise e Projeto Orientados por Objetos

Módulo 07 Características Avançadas de Classes

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

Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite

SCE 186- Engenharia de Software

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

O USO DOS PADRÕES DE PROJETO GOF NA ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

Programação por Objectos. Java

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

PADRÕES DE SOFTWARE. Jerffeson Teixeira de Souza, Ph.D. Tarciane de Castro Andrade. Grupo de Padrões de Software da UECE (GPS.

Análise e Projeto. Padrões de Análise, Arquitetura e Projeto

Java. Marcio de Carvalho Victorino

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Programação Orientada a Objetos em Java

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

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Padrões contexto problema solução

Curso - Padrões de Projeto Módulo 2: Padrões de Criação

Computação II Orientação a Objetos

Prototype, um Design Patterns de Criação

Pasteur Ottoni de Miranda Junior. Alguns Padrões de Projeto Gamma

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente

Design Patterns (Factory Method, Prototype, Singleton)

Padrões de Software (Software Patterns)

INF011 Padrões de Projeto. 02 Creational Patterns

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

Padrões de Projeto. Bibliografia. Nomenclatura

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

Programação por Objectos. Java

Programação Orientada a Objetos. Encapsulamento

(Aula 17) Threads em Java

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

THREADS EM JAVA. George Gomes Cabral

Classes Abstratas e Interfaces

Transcrição:

Análise e Projeto Orientados por Objetos Aula 07 Padrões GoF (Command e Template Method) Edirlei Soares de Lima <edirlei@iprj.uerj.br>

Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype Singleton Estruturais: Adapter Bridge Composite Decorator Façade Flyweight Proxy Comportamentais: Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Method Visitor

Command Intenção: associar uma ação a diferentes objetos através de uma interface conhecida. Permitir que objetos deste tipos tenham tais ações executadas sem que conheçamos o tipo de tais objetos ou a natureza das ações. Solução: encapsular uma requisição como um objeto, permitindo a parametrização de clientes com diferentes requisições.

Command

Command Exemplo

Command Implementação public interface Order void execute(); public class Stock private String name = "ABC"; private int quantity = 10; public void buy() System.out.println("Stock [ Name: "+name+", Quantity: " + quantity +" ] bought"); public void sell() System.out.println("Stock [ Name: "+name+", Quantity: " + quantity +" ] sold");

Command Implementação public class BuyStock implements Order private Stock abcstock; public BuyStock(Stock abcstock) this.abcstock = abcstock; public void execute() abcstock.buy(); public class SellStock implements Order private Stock abcstock; public SellStock(Stock abcstock) this.abcstock = abcstock; public void execute() abcstock.sell();

Command Implementação public class Broker private List<Order> orderlist = new ArrayList<Order>(); public void takeorder(order order) orderlist.add(order); public void placeorders() for (Order order : orderlist) order.execute(); orderlist.clear();

Command Implementação public static void main(string[] args) Stock abcstock = new Stock(); BuyStock buystockorder = new BuyStock(abcStock); SellStock sellstockorder = new SellStock(abcStock); Broker broker = new Broker(); broker.takeorder(buystockorder); broker.takeorder(sellstockorder); broker.placeorders();

Command Consequências Isola requisitante do executor; Permite registro (log) de ações; Permite execução em instante posterior à requisição; Enfileirar ações para processamento em outro momento.

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 devem então ser implementadas pelas subclasses de X.

Template Method

Template Method Exemplo

Template Method Implementação public abstract class Game abstract void initialize(); abstract void startplay(); abstract void endplay(); public final void play() initialize(); startplay(); endplay();

Template Method Implementação public class Cricket extends Game @Override void endplay() System.out.println("Cricket Game Finished!"); @Override void initialize() System.out.println("Cricket Game Initialized! Start playing."); @Override void startplay() System.out.println("Cricket Game Started. Enjoy the game!");

Template Method Implementação public class Football extends Game @Override void endplay() System.out.println("Football Game Finished!"); @Override void initialize() System.out.println("Football Game Initialized! Start playing."); @Override void startplay() System.out.println("Football Game Started. Enjoy the game!");

Template Method Implementação public static void main(string[] args) Game game = new Cricket(); game.play(); game = new Football(); game.play();

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; Permite que as subclasses redefinam certos passos de um algoritmo sem mudar a estrutura desse algoritmo.