Design Patterns Patrícia Mateus nº3343 Carla Guerreiro nº3157

Slides:



Advertisements
Apresentações semelhantes
Soluções elegantes para problemas recorrentes
Advertisements

Padrão de Projeto Iterator
PADRÕES DE PROJETO..
Ferramentas CASE (Computer-Aided Software Engineering)
Engenharia de Software
Docente Responsável: Dra. Isabel Brito
Modelagem de Software Orientado a Objetos
Unified Modeling Language (UML) - Modelação da Arquitectura -
Design Patterns Builder Pattern
Projeto de Sistemas de Software Hazel, Juliana e Luana
Projeto de Sistemas de Software
Padrão de Projeto Memento
Projeto de Sistemas de Software
Projeto de Sistemas de Software
Projeto de Sistemas de Software
Abstract Factory – Gustavo Lopes Mourad.
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.
Eduardo Bezerra Padrões GoF Eduardo Bezerra
Padrões - introdução O que é um padrão?
Trabalho de Conclusão de Curso Moisés Alves Carneiro Filho
Padrão de Construção Factory Method
Como Desenvolver Sistemas de Informação
Documentação da Neptus Framework
Design Patterns Projeto de Sistemas de Software.
Fundamentos da Engenharia de Software
Visão crítica sobre padrões: Over Engineering
Vector To Raster Factory & Strategy Eric Silva Abreu São José dos Campos - 15 de dezembro de 2006.
Projeto de Sistemas de Software
Projeto de Sistemas de Software
Chain of Responsibility
DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade Universidade.
Adriano S. Castro André Abdalla
LEONARDO SIMAS JUSSI BARROS WESLLEY VIEIRA Flyweight.
Rodrigo Cândido da Silva Instrutor VOffice / Globalcode
Padrões de Projeto These slides complement the E-book, Programming in the Large With Design Patterns available on both Kindle and Nook. Additional supporting.
Design Pattern (Padrões de Projeto)
Padrões de Projeto.
Introdução Padrões de Projeto
Padrões de Interação com o Usuário
Design Patterns (Padrões de Projeto)
Padrão de Projeto Iterator Projeto de Sistemas de Software Thiago Pinheiro de Araújo.
Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema.
Padrões de Projeto Abstract Factory.
Padrão de desenvolvimento
April 05 Prof. Ismael H. F. Santos - 1 Modulo I Princípios e Padrões de Projeto de SW em Java Professores Eduardo Bezerra –
April 05 Prof. Ismael H. F. Santos - 1 Módulo III Padrões GOF: Iterator Professores Eduardo Bezerra –
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.
Padrões de Projeto de Software Orientado a Objetos
1 Padrão: Iterador (Iterator) Tipo - “Object behavioral” Objetivo - acessar um agregado sem expor a representação Outros nomes - Cursor.
1 Padrões: Composite (p. 163) Objetivo: compor objetos em estruturas de árvores para representar relações de parte/todo. “Composite” permite tratar objetos.
Padrões de projeto M.Sc. Sílvio Bacalá Jr..
1 Design Patterns Israel Rios. 2 Origens A idéia de padrões de projeto não teve origem na ciência da computação Christopher Alexander A Pattern Language:
Padrão Composite Definição
Objetos Distribuídos Frameworks Orientados a Objetos.
Frameworks e Componentes Daniel Fernando Pavelec.
CURSO DE ESPECIALIZAÇÃO EM TECNOLOGIA JAVA DESIGN PATTERNS PARTE 1: INTRODUÇÃO Prof. Cesar Augusto Tacla UTFPR/Campus.
CURSO DE ESPECIALIZAÇÃO EM TECNOLOGIA JAVA DESIGN PATTERNS Prof. Cesar Augusto Tacla UTFPR/Campus Curitiba.
1 - Introdução a Padrões de Projeto
Padrões de Projetos Orientados a Objetos I Wolley W. Silva.
PADROES DE PROJETO PROF. OSIEL MARLON. PADRÕES DE PROJETO INTRODUÇÃO Padrões de projeto têm emergido como uma das mais promissoras abordagens para a melhoria.
Padrões de Projeto. O que são?  Soluções provenientes de diversos projetos e utilizados por diversos programadores;  Documentados em catálogos como.
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/65 Padrões de Projeto.
Padrões de Projeto de Criação Padrões de Projeto Orientados a Objetos Prof a. Danielle Martin Universidade de Mogi das Cruzes.
1 Padrões de Projeto de Software Orientado a Objetos Programação Orientada a Objetos Prof. Fabio Kon - IME/USP.
1 Introdução aos Padrões de Projetos Créditos: Prof. Fabio Kon - IME/USP Adaptações: Prof. Nécio de Lima Veras.
Introdução a Padrões de Projeto Padrões de Projeto Orientado a Objetos Profa. Danielle Martin Universidade de Mogi das Cruzes.
Programação Orienta a Objetos (SI) Análise e Projetos de Sistemas (LCC) 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão.
Introdução a Padrões de Projeto Padrões de Projeto Orientado a Objetos Profa. Danielle Martin Universidade de Mogi das Cruzes.
Padrões de Projeto.
Transcrição da apresentação:

Design Patterns Patrícia Mateus nº3343 Carla Guerreiro nº3157 Escola Superior de Tecnologia e Gestão Instituto Politécnico de Beja Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005

Conteúdos Introdução; História; O que são Design Patterns; Como são constituídos; Como descrever e escolher um Design Pattern; Classificação; Exemplo (Iterator); Vantagens e Desvantagens; Design Patterns VS Frameworks ;

Introdução Design Patterns representam, geralmente, uma solução a um problema comum no desenho de software. Desenvolver software orientado a objectos é complicado mas desenvolver software reutilizável orientado a objectos ainda é mais complicado. Design Patterns podem acelerar o desenvolvimento ao providenciar paradigmas de desenvolvimento já testados e provados.

História O conceito patterns foi originário na indústria da construção. Arquitectos aperceberam-se que precisavam de partilhar ideias sobre técnicas de design. “Cada pattern descreve um problema que ocorre por diversas vezes no nosso ambiente, e então descreve o núcleo da solução àquele problema de tal forma que a solução pode ser utilizada milhares de vezes” – Christopher Alexander (Arquitecto). Os design patterns deram o salto da arquitectura para os sistemas de computadores nos anos 80. A filosofia object-oriented (OO) estava a ganhar popularidade e os design patterns eram uma forma de educar os seguidores OO da melhor forma.

O que são design patterns Consistem numa documentação de soluções genéricas e reutilizáveis, aplicáveis em problemas recorrentes. descreve o problema, a sua solução, quando esta deve ser aplicada e quais as suas consequências. Enumera também algumas dicas e exemplos de implementação. são descrições de objectos e classes interrelacionados que são adaptados para resolver um problema de design num contexto particular.

Como são constituídos Nome: Problema: Solução: Consequências: descreve sucintamente o problema; Problema: descreve quando se deve aplicar; Solução: descreve os elementos que constituem o design (as suas relações, responsabilidades e colaborações); Consequências: - resultados e transacções da aplicação do pattern; - engloba o impacto na flexibilidade, extensibilidade ou portabilidade do sistema;

Como descrever um Design Pattern Nome do padrão e sua classificação: o nome deve ser identificativo e a sua classificação é feita segundo critérios explicados mais à frente. Objectivo: descrição do que o pattern faz, qual o objectivo a atingir e para que problemas está direccionado. Motivação: um cenário que ilustra o problema e de que forma as classes e estruturas de objectos envolvidas o resolvem. Aplicabilidade: quais as situações em que o pattern pode ser aplicado e como podemos reconhecer essas situações. Estrutura: - representação gráfica das classes usando OMT. - usados diagramas de interacção OMT – Object Modeling Technique)

Como descrever um Design Pattern Participantes: responsabilidades das classes e objectos participantes. Colaborações: como os participantes colaboram para levar a cabo as responsabilidades. Consequências: quais os prós e os contras e os resultados inerentes ao uso do pattern. Que aspectos do sistema podem variar independentemente. Implementação: quais as dicas e técnicas a considerar nesta fase. Amostras de código: fragmentos de código que ilustram uma possível forma de implementação. Exemplos de utilização: exemplos de patterns encontrados em sistemas Padrões relacionados: patterns relacionados, quais as principais diferenças e com que patterns podem ser utilizados.

Como escolher um Design Pattern Considerar como o design pattern resolve determinado problema. Procurar pelo pattern cujo objectivo seja relevante para a solução do problema. Estude o inter-relacionamento entre patterns graficamente. Estudo de patterns com objectivos semelhantes. Examine a causa do redesenho: verifique se o problema envolve alguma dessas causas e verifique quais os padrões que as evitam. Considere o que deve ser variável no seu design. Neste caso é considerado o que forçará uma mudança no design, ou seja, considere o que poderá precisar de mudar sem ter que redesenhar o sistema. Devemos escolher o DP cujo objectivo seja relevante para a solução do problema, estudando o inter-relacionamento entre patterns com objectivos semelhantes. Verificar quais as causas do redesenho e ver quais os patterns que os evitam. Considerar também o que poderá ser preciso mudar sem ter que redesenhar o sistema

Classificação Propósito Âmbito Os design patterns podem ser classificados segundo dois critérios: Propósito Criação Estrutural Comportamental Âmbito Class Pattern Object Pattern

Classificação: propósito Patterns de criação: criam objectos por si, sem que tenha que instanciá-los directamente; programa com mais flexibilidade em decidir quais os objectos que devem ser criados para determinado caso. podem ser competidores ou complementares. Patterns estruturais: ajudam a compor grupos de objectos em amplas estruturas, tais como interfaces de utilizador complexas. Patterns comportamentais: auxiliam na definição da comunicação entre objectos no sistema e como o seu fluxo é controlado num programa complexo.

Classificação: âmbito Classe: patterns aplicados a classes lidam com relações entre classes e as suas subclasses; as relações são estabelecidas através da herança de classes; são estáticas. Objecto: patterns aplicados a objectos lidam com as relações dos objectos; podem ser modificados durante a execução; são mais dinâmicos. aqueles que focam as relações entre classes.

Chain of Responsibility Classificação Propósito Criação Estrutural Comportamental Âmbito Classe Factory Adapter Interpreter Template Objecto Abstract Factory Builder Prototype Singleton Bridge Composite Decorator Facade Proxy Chain of Responsibility Command Iterator Mediator Memento Flyweight Observer State Strategy Visitor Figura1 – As 23 categorias organizadas segundo a sua classificação

Exemplo (Iterator) Nome do Pattern e Classificação: Propósito: Iterator – Comportamental (Object Pattern) Propósito: Providência um modo de acesso a elementos de um agregado de objectos. Motivação: Um objecto que possua agregações deve permitir que os seus elementos sejam acedidos sem que a sua estrutura interna seja exposta. 2- sequencialmente, sem exposição de estruturas internas.

Exemplo (Iterator) Aplicação: aceder ao conteúdo de objecto agregados sem expor a sua representação interna; suportar mais de uma maneira de percorrer a lista; Providenciar uma interface única para percorrer diferentes estruturas agregadas;

Representação gráfica das classes Exemplo (Iterator) Estrutura: Cliente Representação gráfica das classes Retirado de www.inf.ucp.br/profs/tavares/2002_01/aulaDP-1.ppt

Exemplo (Iterator) Participantes: Define um interface para aceder e percorrer os elementos; ConcreteIterator Implementa a interface do Iterator; Mantém a informação sobre o elemento percorrido; Aggregate Define um interface para a criação do objeto Iterator; ConcreteAggregate Implementa o método da interface que retorna uma instância do ConcreteIterator. Colaborações: ConcreteIterator mantém a referência do objecto que está a ser percorrido, podendo calcular qual o elemento seguinte.

Exemplo (Iterator) Consequências: Suporta alterações na forma como é percorrida a lista; Simplifica a interface Aggregate; Podem ser feitos vários percursos, já que o seu estado é armazenado em cada Iterator. Patterns Relacionados: Composite: Estruturas recursivas; Factory Method; Memento. Exemplos de Utilização: sistema de repositório de clientes. Exemplos – sistema de repositório em que poderiamos inserir, remover, actualizar, obter dados dos cliente. Ou seja, deveríamos criar um objecto (Iterator) que seria utilizado para acedermos a todos os clientes do repositório de forma sequencial.

Design Patterns VANTAGENS: DESVANTAGENS: Reutilização de soluções; Estabelecimento de terminologia comum; perspectiva de alto nível do problema (abstracção) e do processo de design; Ilustra os princípios básicos da orientação a objectos; Facilitar modificações; DESVANTAGENS: Os programadores são tentados a recorrer ao uso dos patterns mesmo quando não é apropriado a sua utilização; Pode limitar a criatividade; Pode aumentar a complexidade de design dificultando a manutenção do código;

Frameworks Técnica de reutilização orientada a objectos que compreende tanto design como código, com uma representação física em termos de classes, métodos e objectos. Objectivo: Diminuir a quantidade de código necessária para implementar aplicações similares A ideia de programação em frameworks era popular e com o seu desenvolvimento os design Patterns começaram a emergir. http://www.dofactory.com/Framework/Framework.aspx

Design Patterns VS Frameworks os design patterns são mais abstractos e gerais; Design Patterns não podem ser directamente implementados num determinado ambiente de software; um framework pode conter vários design patterns; Design Patterns permitem a reutilização da arquitectura; Frameworks permitem a reutilização do código. Juntos, permitem a melhoria da qualidade do software e reduzem o tempo de desenvolvimento. Uma framework pode ser gerada para representar um editor gráfico para diferentes domínios, tais como desenho, composição musical e CAD mecânico ; os design patterns são menos especializados do que o framework, pois o framework tem sempre domínio de aplicação específico;

Conclusão Design Patterns não são uma solução para todos os problemas de desenvolvimento de software, mas pode se tornar numa ferramenta valiosa. Não existem soluções nem respostas perfeitas, por isso é necessário bom senso na utilização de design patterns. Os design patterns descrevem a forma como os objectos comunicam sem que se emaranhem nos diferentes modelos e métodos. Conservar esta separação tem sido um dos principais objectivos de uma correcta programação orientada a objectos.

Referências Bibliográficas Livros: E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995. A. Shalloway, J.R. Trott, Design Patterns Explained Formato electrónico: http://dsc.upe.br/~scbs/unicap/poo/Iterator.html http://jacques.dsc.ufcg.edu.br/cursos/map/html/map2.htm http://www.developer.com/design/article.php/3309461 http://coronet.iicm.edu/sa/scripts/lesson12.htm#_Toc6032417