Padrões de Projeto. Prof. Jefersson Alex dos Santos (jefersson@dcc.ufmg.br) http://www.dcc.ufmg.br/~jefersson



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

1Introdução Helder da Rocha

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

Padrões de Projeto de Software Orientado a Objetos

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

Padrões GoF. Leonardo Gresta Paulino Murta

Prof.ª Esp. Talita Pagani

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

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

Testes com Design Patterns

Design Patterns. Viviane Torres da Silva

Design Pattern Implementation in Java and AspectJ

Padrões de Software (Software Patterns)

Análise e Projeto Orientados por Objetos

Padrões de projeto 1

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

Análise e Projeto de Sistemas de Informação. Andrêza Leite andreza.lba@gmail.com

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

Programação com Objectos. Programação Centrada em Objectos. Home Page. Ano Lectivo 2008/2009 1º Semestre. Objectivos Programa Bibliografia Avaliação

Prototype, um Design Patterns de Criação

Programação com Objectos

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

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

Mas o que é mesmo Padrão de Projeto?

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 Desenho (Design Patterns)

Padrões de Projeto de Software

Uma Noção Intuitiva dos Padrões de Desenho de Software

Eduardo Bezerra. Editora Campus/Elsevier

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

PADRÕES DE PROJETO. Cleviton Monteiro

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Padrões Arquiteturais e de Integração - Parte 1

Engenharia de Software na Prática Hélio Engholm Jr.

Análise e Projeto Orientados por Objetos

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Campus Curitiba PLANO DE ENSINO

Tópicos Avançados em Engenharia de Software

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 WEB e o MVC

Arquitectura de Sistemas de Software

Padrões de Software (Software Patterns)

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

Design Patterns na plataforma Java

Padrões. Projeto (Design) de Software

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

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

SCE 186- Engenharia de Software

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

Engenharia de software para desenvolvimento com LabVIEW: Validação

INF011 Padrões de Projeto Introdução

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

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB)

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Histórico da Orientação a Objetos Ciclo de vida de Desenvolvimento de SW

Autoria:Aristófanes Corrêa Silva Adaptação: Alexandre César M de Oliveira

PADRÕES DE PROJETO E FRAMEWORK NO DESENVOLVIMENTO DE SOFTWARE

Padrões de Desenho Engenharia de Software

2 Engenharia de Software

2 Diagrama de Caso de Uso

Engenharia de Software I: Análise e Projeto de Software Usando UML

Padrões de Projeto de Software

Histórico de revisões

Padrões de Projeto de Software Orientado a Objetos

Proposta para a Implementação do Cadastro de um Log de Auditoria Baseada em Padrões de Projeto

Especialização em web com interfaces ricas. Padrões de Projeto - Estruturais

Padrões. Identificando padrões

Padrões contexto problema solução

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Introdução ao Design

Fundamentos de Banco de Dados e Modelagem de Dados

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

OO IMPACTO DA UTILIZAÇÃO DE DESIGN

MVC e Camadas - Fragmental Bliki

Refatoração de sistemas Java utilizando padrões de projeto: um estudo de caso

2 a Lista de Exercícios

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

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

Padrão Básico de Projeto: Herança versus Composição

UML - Unified Modeling Language

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

Desenho de Software. Desenho de Software 1

Engenharia de Software

Profa. Thienne Johnson

Engenharia de Requisitos

UML 01. Curso Superior de Tecnologia em Banco de Dados Disciplina: Projeto de Banco de Dados Relacional 1 Prof.: Fernando Hadad Zaidan

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br

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

SABiO: Systematic Approach for Building Ontologies

Eduardo Bezerra. Editora Campus/Elsevier

TESTES AUTOMATIZADOS COM JUNITE MOCKITO

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Transcrição:

Padrões de Projeto Prof. Jefersson Alex dos Santos (jefersson@dcc.ufmg.br) http://www.dcc.ufmg.br/~jefersson

Apresentação Conceitos Definição Ponto de vista prático História Padrões de Projeto Conhecidos Padrões GoF Outros Padrões Aplicações (JFC e SEAD) Conclusão

Conceitos Segundo o dicionário Aurélio: Padrão sm. 1. Modelo oficial de pesos e medidas. 2. O que serve de base ou norma para avaliação, medida. 3. Objeto que serve de modelo à feitura de outro. 4. Desenho decorativo estampado em tecido ou outra superfície.

Conceitos Para a Engenharia de Software: Um padrão é uma combinação recorrente de elementos de modelagem que ocorrem em algum contexto; Padrões podem ser aplicados nas diversas etapas do desenvolvimento de software.

Conceitos Fases de Desenvolvimento de Software: Ciclo de vida clássico

Padrões de Análise Um padrão de análise é qualquer parte de uma especificação de requisitos que se origina em um projeto e pode ser reutilizada em diversos projetos.

Padrões de Análise Exemplo: Padrão para reservas e locação de entidades reutilizáveis (quarto de hotel, aluguel de automóveis, filmes, etc).

Padrões de Projeto Os padrões de projeto são arquiteturas comprovadas para construir software orientado a objetos; A idéia é a mesma dos padrões de projeto aplicadas na arquitetura.

Padrões: Análise X Projeto Padrões de análise são dependentes da aplicação. Descrevem aspectos típicos de algum domínio ou aplicação; Padrões de projeto estão mais próximos da implementação. Focam interfaces, criação de objetos e propriedades estruturais.

Framework X Padrões Atenção: Padrões de Projeto e frameworks são coisas diferentes; Frameworks são estruturas de suporte bem definidas em que um outro projeto de software pode ser organizado e desenvolvido.

Ponto de Vista Prático Padrões de projeto não são algoritmos; Padrões de projeto não oferecem componentes; Padrões de projeto oferecem soluções comprovadamente eficientes; Catálogos de Padrões funcionam como Livros de Receitas.

Ponto de Vista Prático Software: Bolo de Chocolate

Ponto de Vista Prático Catálogos de Padrões de Projeto: Livros de Receitas

Ponto de Vista Prático Framework: Bolo de Caixinha

Design Patterns: FAQs Pra que serve? Por que utilizar? Compensa? Quais as vantagens? Quem deve utilizar? Como surgiram? Existem aplicações bem sucedidas?

Design Patterns: Vantagens Segundo Deitel & Deitel: Ajudam a construir software confiável com arquiteturas comprovadas; Promovem reutilização de projeto; Ajudam a identificar erros e armadilhas comuns; Estabelecem um vocabulário comum entre os desenvolvedores; Encurtam a fase de projeto.

Design Patterns: História Década de 1980: Linguagem OO: SmallTalk; C++ engatinhava ; Programação de Frameworks era bastante popular; Alguns frameworks, que hoje chamados de padrões, surgiram. Exemplo: MVC.

Design Patterns: História Década de 1990: Linguagens OO: C++, Java; Primeiras formalizações; Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides escreveram: Design Patterns: Elements of Reusable Object-Oriented Software The GoF Book.

Design Patterns: História Atualmente: Novos projetos são criados a todo momento; Há muitos projetos catalogados na Internet; Novos conceitos relacionam-se diretamente: XP (extreme Programming Programação Extrema); Refactoring (Refatoração).

Os Padrões GoF A turma dos quatro descreveu, em seu livro, 23 padrões de projeto; Esses padrões foram divididos em três categorias: Criacionais; Estruturais; Comportamentais.

Padrões de Criação Lidam com a melhor maneira de instanciar objetos; O aplicativo não deve depender de como os objetos são criados ou arranjados; Abstrair o processo de criação em uma classe criadora pode tornar o software mais flexível e genérico.

Padrões de Criação PADRÃO Abstract Factory Builder Factory Method Prototype Singleton DESCRIÇÃO É uma fábrica de objetos que retorna outras fábricas. Separa a construção de um objeto complexo de sua representação. Retorna uma instância dentre muitas possíveis classes, dependendo dos dados providos. Permite a um objeto devolver uma cópia de si mesmo para um objeto que o solicite. Garante que apenas uma única instância de uma classe vai existir.

Padrões Estruturais Descrevem maneiras comuns de organizar classes e objetos de um sistema: A herança pode ser utilizada para tornar mais utilizáveis as interfaces do programa; Objetos podem ser compostos em grandes estruturas utilizando composição ou inclusão de objetos dentro de outros.

Padrões Estruturais PADRÃO Adapter Bridge Composite DESCRIÇÃO Fornece um objeto de uma nova interface que se adapta à interface de outro objeto. Permite que se criem novos componentes para diferentes plataformas com uma ponte. A ponte esconde detalhes específicos de cada plataforma. Permite que um objeto cliente que está percorrendo uma estrutura hierárquica não precise determinar o tipo de cada componente dessa estrutura.

Padrões Estruturais (cont.) PADRÃO Decorator Facade Flyweight Proxy DESCRIÇÃO Permite que um objeto assuma responsabilidades adicionais dinamicamente. Permite que um objeto fachada forneça uma interface para os comportamentos de um subsistema. Permite reduzir o número de instâncias de um mesmo dado em uma classe. Permite que um objeto (Objeto Proxy) aja como um substituto para outro.

Padrões Comportamentais Oferecem estratégias comprovadas para modelar como os objetos colaboram uns com os outros em um sistema; Sugerem comportamentos especiais apropriados para uma grande variedade de aplicações.

Padrões Comportamentais PADRÃO Chain-of-Resp onsibility Command Interpreter Iterator DESCRIÇÃO Permite determinar o objeto que irá tratar uma mensagem em situações em que os objetos conversam. Permite especificar a funcionalidade desejada uma só vez, em um objeto reutilizável. Descreve como definir uma gramática e como utilizá-la para interpretar as entradas. Permite que objetos acessem dados individuais de qualquer estrutura de dados, sem conhecer o comportamento da estrutura de dados.

Padrões Comportamentais PADRÃO Mediator Memento Observer State DESCRIÇÃO Promove o baixo acoplamento entre duas classes fazendo com que as trocas de mensagens entre elas sejam realizadas por um objeto mediador. Permite que um sistema salve o estado de um objeto, podendo ser restaurado posteriormente. Permite que um mesmo objeto possua diversas representações. Perminte descrever comportamentos para estados que um objeto possui.

Padrões Comportamentais PADRÃO Strategy Template Method Visitor DESCRIÇÃO Permite armazenar um objeto estratégia que encapsula um algoritmo responsável pelo comportamento da classe. Exige que todos os objetos compartilhem um único algoritmo definido por uma superclasse. Permite que sejam adicionadas novas funcionalidades a classes existentes, de maneira plugável, sem que haja a necessidade de se alterar a hierarquia das classes.

Relacionamentos

Relacionamentos (Cont.)

Outros Padrões Padrões Arquiteturais; Padrões para Programação Paralela e Distribuída; Padrões J2EE;

Exemplos de Aplicação JFC (Java Foundation Classes): Swing: API Gráfica do Java; É considerada uma obra de arte da linguagem orientada a objetos. SEAD: Software Estatístico de Análise de Desempenho Acadêmico.

Conclusões Os padrões de projeto são maneiras convenientes de reusar código orientado a objetos entre projetos e programadores. A idéia é simples: catalogar interações comuns entre objetos que são utilizados freqüentemente pelos programadores.

Conclusões Termos relacionados: Programação Extrema (extreme Programming); Refatoração; Programação Orientada a Objetos. Não confundir com: Padrões de análise; Frameworks;

Referências Deitel, H. M. e Deitel, P. J. Java, Como Programar. Editora Bookman, 2003, 4ª edição, Porto Alegre, RS. Horstmann, Cay S. Cornell, Gary. Core Java 2 Volume I (Fundamentos). Editora Makron Books, 2001, São Paulo, SP. Cooper, James W. The Design Patterns: Java Companion. IBM Thomas J. Watson Research Center. Addison Wesley Design Patterns Series. Gamma, Helm, Johnson e Vlisside. Design Patterns: Elements of Reusable Software. Addison Wesley: 1995.