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

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

Análise e Projeto Orientados por Objetos

Padrões de Projeto de Software

Mas o que é mesmo Padrão de Projeto?

Análise e Projeto Orientados por Objetos

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

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

Análise e Projeto Orientados por Objetos

Etapas principais do desenvolvimento de software Padrões arquiteturais Padrões de projeto

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

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

INF011 Padrões de Projeto Introdução

Padrões Comportamentais. Padrões de Projeto Comportamentais. Motivação. Chain of Responsibility (CoR) Padrão Chain of Responsibility

Análise e Projeto Orientados por Objetos

Padrões de Projeto de Software

Padrões de Projeto de Software Orientado a Objetos

Módulo III Padrões GOF

Engenharia de Software

Sumário. Prefácio 12. Capítulo 1 - Técnicas Simples Para um Código Limpo 23

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

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

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

Design Patterns. Viviane Torres da Silva

Padrões contexto problema solução

Padrões de Design Orientado a Objetos Design Patterns. Jorge H. C. Fernandes DI-UFPE, Junho de 1999

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

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

Análise e Projeto Orientados por Objetos

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

15/09/2014. Aula 01: Apresentação. Review to 1 st Exam. Aula 02: Técnicas de Reuso. Panorama de Reuso. Aula 03: POO e Padrões. Bibliografia da Aula 02

Segunda Parte (3 valores) Primeira Parte (7 valores) Nome: Número: PERGUNTA NOTA PERGUNTA RESPOSTA

Prof.ª Esp. Talita Pagani

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos

Programação com Objectos

Aula 01: Apresentação. Revisão para Prova 1. Aula 02: Técnicas de Reuso. Panorama de Reuso. Aula 03: POO e Padrões. Bibliografia da Aula 02

Princípios de Engenharia de Software Resumo 8 Semana 8 Versão: 1.0 Data: 05/10/04

Programação com Objectos. 2º Teste 2015/2016 1º Semestre

Design Pattern Implementation in Java and AspectJ

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

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

Testes com Design Patterns

Decorator e Composite. Nazareno Andrade (baseado no material de Hyggo Almeida)

Arquitectura de Sistemas de Software

Tópicos Especiais em Informática Fatec Indaiatuba

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

Prof. Dr. Dilermando Piva Jr. Fatec Indaiatuba

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

Aula 24 Programação Modular, POO e Padrões de Projeto

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

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

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

1Introdução Helder da Rocha

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

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

Técnicas para Reutilização de Software

Padrões de Projeto de Software

Nome: Número: Segunda Parte (3 valores) Primeira Parte (7 valores)

Design Patterns. Viviane Torres da Silva

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

Tópico 8: Arquitetura, Padrões, Frameworks e MDA

Padrões de Projeto de Software Orientado a Objetos

Creational Patterns Factory method

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

Padrões Fábrica. Simple Factory Factory Method

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Tecnologias Atuais de. Desenvolvimento de Software

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

PADRÕES DE PROJETO DE SOFTWARE

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

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

Classe Abstrata e Interface

Classes e Objetos. Sintaxe de classe em Java

Padrões de Projeto. Marco Túlio de Oliveira Valente

Herança e Polimorfismo

INF011 Padrões de Projeto. 11 Composite

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

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

LEIC-A / MEIC-A 2007/2008 (1º

Abstract Factory Builder Factory Method Prototype Singleton Adapter Bridge Composite Decorator Facade Flyweight Proxy

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

TREINAMENTO ORIENTAÇÃO A OBJETOS

CURSO DE SISTEMAS DE INFORMAÇÃO ALINE DE SOUSA PEREIRA PADRÕES DE PROJETO: UMA COMPILAÇÃO DOS MAIS UTILIZADOS EM PROJETOS DE SOFTWARE

PROJETO DE ARQUITETURA

Vítor E. Silva Souza

Padrões GoF Iterator, State, Singleton, Observer e Composite

Introdução. Atributos em Java. Atributos. Acesso à atributos em Java. Atributo versus variável. Atributos, métodos e encapsulamento.

Programação com Objectos Teste Teórico 18 de Dezembro de 2008, 19:00 (120 minutos)

PADRÕES DE PROJETO DE SOFTWARE

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI CCO002 Engenharia de Software

6 Polimorfismo. Desenvolvimento OO com Java. Vítor E. Silva Souza ~ vitorsouza

Programação por Objectos. Java

Transcrição:

DCC / ICEx / UFMG Padrões de Projeto Padrões de Projeto Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Um padrão é uma descrição do problema e a essência da sua solução Documenta boas soluções para problemas recorrentes Permite o reuso de conhecimento anterior documentados em boas práticas Deve ser suficientemente abstrato para ser reusado em aplicações diferentes Os 23 Padrões de Projeto Os 23 padrões de projeto mais conhecidos foram popularizados pelo livro de E. Gamma, R. Helm, R. Johnson e J. Vlissides Conhecido como Gang-of-Four (GoF) Além dos 23 Padrões GoF Novos padrões de projeto surgem a todo momento Padrões para áreas específicas, como padrões de interface, padrões de persistência, padrões de arquitetura, etc. Existem vários livros sobre padrões de projeto A maioria deles se concentra nos 23 padrões GoF Classificação dos Padrões Documentação de um Padrão Segundo o seu propósito De Criação: tratam da criação de objetos Estruturais: tratam da composição de classes e objetos Comportamentais: tratam das interações e responsabilidades entre classes e objetos Segundo seu escopo Classes: lidam com os relacionamentos entre classes e subclasses Objetos: lidam com os relacionamentos entre objetos e classificação Outros nomes Motivação Aplicações Estrutura Participantes Colaboração Implementação Código de exemplo Usos conhecidos Padrões relacionados

Elementos Principais Um identificador significativo para o padrão Descrição da solução Um template de solução que pode ser instanciado em maneiras diferentes Os resultados e compromissos de aplicação do padrão Padrões de Criação Padrões de Criação Abstract Factory Builder Factory Method Prototype Singleton Problema (Factory Method) Uma classe não sabe antecipar o tipo dos objetos que a mesma precisa criar É preciso adiar a instanciação de objetos para as subclasses Exemplo: suponha uma aplicação lida com diversos tipos de documentos Ela sabe quando os documentos devem ser criados, mas não sabem que documentos criar Padrão Factory Method Factory Method Slide anterior Descrição da solução Próximo slide Eliminam dependências de classes específicas (código lida com as interfaces) Solução do Factory Method Super-classes não conhecem o produto específico.

Solução do Factory Method Solução do Factory Method O método fábrica cria e retorna o objeto no momento adequado. O produto geral pode seu usado pela superclasse, mesmo sem conhecer o produto específico. Padrões de Criação Abstract Factory Builder Factory Method Prototype Singleton Padrão Singleton Singleton Uma classe precisa ter uma única instância Descrição da solução Próximo slide Fácil acesso e gerência de recursos compartilhados, como variáveis globais Solução do Singleton Exemplo: ClasseSingleton public class ClasseSingleton { O construtor é privado O método instance() é público e estático Retorna a única instância que é guardada em uma variável de classe private static ClasseSingleton instance; private int numinstances = 0; private ClasseSingleton() { numinstances++; public static ClasseSingleton getinstance() { if (instance == null) instance = new ClasseSingleton(); return instance; public void printnuminstances() { System.out.println("numInstances = "+numinstances); Atributo que armazena a única instancia da classe.

Exemplo: ClasseSingleton public class ClasseSingleton { private static ClasseSingleton instance; private int numinstances = 0; private ClasseSingleton() { numinstances++; Construtor da classe é privado para evitar criação acidental de outras instancias. public static ClasseSingleton getinstance() { if (instance == null) instance = new ClasseSingleton(); return instance; public void printnuminstances() { System.out.println("numInstances = "+numinstances); Exemplo: ClasseSingleton public class ClasseSingleton { private static ClasseSingleton instance; private int numinstances = 0; private ClasseSingleton() { numinstances++; Única instancia só pode ser obtida pela chamada ao método getinstance() da classe. public static ClasseSingleton getinstance() { if (instance == null) instance = new ClasseSingleton(); return instance; public void printnuminstances() { System.out.println("numInstances = "+numinstances); Exemplo: ClasseSingletonTest public class ClasseSingletonTest { public static void main(string[] args) { ClasseSingleton singleton = ClasseSingleton.getInstance(); // ClasseSingleton singleton = new ClasseSingleton(); singleton.printnuminstances(); Padrões Estruturais Tentar criar uma instância pela chamada ao construtor causa erro de compilação. Padrões Estruturais Adapter Bridge Composite Decorator Facade Flyweight Proxy Problema (Padrão Adapter) Uma biblioteca é projetada para ser reusada Entretanto, a interface da biblioteca (assinatura dos métodos) pode não ser exatamente a esperada pela aplicação Não é desejável alterar o código da aplicação Não é desejável alterar a interface da biblioteca

Padrão Adapter Adapter Permitir que classes com interfaces incompatíveis trabalhem juntos Descrição da solução (próximo slide) Reuso de funcionalidades de uma classe sem alterar sua interface O cliente (Client) precisa de uma funcionalidade. A funcionalidade já está implementada no Adaptee. Entretanto, os métodos tem assinaturas diferentes. Classes adaptadoras. Classes adaptadoras. A classe Target tem a assinatura do método que o cliente precisa. A classe Adapter converte a assinatura do método em Adaptee para aquela que o cliente precisa.

Padrões Estruturais Problema (Padrão Composite) Adapter Bridge Composite Decorator Facade Flyweight Proxy Algumas aplicações permitem construir entidades complexas a partir de elementos mais simples Exemplo: Editor de Figuras Figuras Primitivas Linha Círculo Problema (Padrão Composite) Problema (Padrão Composite) Algumas aplicações permitem construir entidades complexas a partir de elementos mais simples Exemplo: Editor de Figuras Algumas aplicações permitem construir entidades complexas a partir de elementos mais simples Exemplo: Editor de Figuras Figuras Compostas Figuras Compostas Quadrado Triângulo Casa Rosto Padrão Composite Solução do Composite Composite Compor objetos em estrutura hierárquica (todoparte) Descrição da solução (próximo slide) Objetos primitivos e compostos são tratados de maneira uniforme Fácil incluir novos objetos Component define as operações genéricas.

Solução do Composite Solução do Composite Leaf define operações de elementos primitivos. Composite representa elementos compostos. Padrões Estruturais Adapter Bridge Composite Decorator Facade Flyweight Proxy Problema (Padrão Decorator) Adicionar e remover responsabilidades dinamicamente a um objeto Padrão Decorator Decorator Agregar dinamicamente novas responsabilidades a um objeto Descrição da solução (próximo slide) Maior flexibilidade que herança Evita sobrecarregar hierarquia de classes Solução do Decorator Decorator conhece o componente a ser decorado.

Solução do Decorator Padrões Comportamentais Podem haver vários decoradores concretos. Padrões Comportamentais Problema (Padrão Observer) Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Method Visitor Padrão Observer Solução do Observer Observer Separar o objeto de sua forma de apresentação Descrição da solução (próximo slide) Otimizações para melhorar a atualização da apresentação

Padrões Comportamentais Chain of Responsibility Command Observer Interpreter State Iterator Strategy Mediator Template Method Memento Visitor Problema (Strategy) Existem vários algoritmos para um mesmo problema Exemplo: vários algoritmos de ordenação de array (BubbleSort, QuickSort, etc.) O objetivo é implementar e executar diferentes algoritmos usando uma mesma interface Encapsular os diferentes algoritmos e torná-los intercambiáveis Padrão Strategy Solução do Strategy Strategy Definir uma família de algoritmos Descrição da solução próximo slide Permite alternar entre diferentes algoritmos sem o uso de condicionais A aplicação usa o algoritmos sem conhecer sua real implementação. Solução do Strategy Referências E. Gamma, R. Helm, R. Johnson, J. Vlissides. Padrões de Projeto, 1a. Edição. Bookman, 2000. Padrões: Factory Method, Singleton, Adapter, Composite, Decorator, Observer e Strategy Diferentes implementações do algoritmo.