A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 - Introdução a Padrões de Projeto

Apresentações semelhantes


Apresentação em tema: "1 - Introdução a Padrões de Projeto"— Transcrição da apresentação:

1 1 - Introdução a Padrões de Projeto
Eduardo de Lucena Falcão

2 Site da disciplina: http://edufalcao.me/design-patterns/
Grupo (facebook): Padrões de Projeto - DCX/UFPB Contato: Padrões de Projeto - Introdução

3 Apresentação Expectativas? OO e Design Patterns
Padrões de projeto são resultados da experiência dos melhores projetistas de software OO. Objetivo: reuso dos padrões/ideias (!código) Soluções ad hoc vs soluções baseadas em padrões  Flexibilidade, modularidade e reuso Padrões de Projeto - Introdução Essa disciplina não é uma introdução à tecnologia orientada a objetos ou a padrões orientados a objetos. Pra essa disciplina seria interessante que vocês já tivessem um contato com alguma linguagem OO (no nosso caso Java) e conhecessem pelo menos os conceitos básicos de OO como herança e polimorfismo... Na disciplina de padrões de projetos o nosso objetivo não é mais aprender a programar de forma orientada a objetos. Nós usamos esta técnica que aprendemos anteriormente para implementar soluções utilizando padrões de projetos. A ideia dos padrões de projetos é que nós utilizemos soluções simples para problemas específicos no projeto de software orientado a objetos. Nessa disciplina nós vamos reaproveitar os esforços que vários desenvolvedores de software fizeram para modelar seus sistemas de modo flexível e modularizado, e posteriormente documentaram isso. Nosso objetivo é entender essas soluções de maneira sucinta e a partir de alguns exemplos, termos noção de como as aplicaríamos em uma situação real. Geralmente os padrões de projetos utilizam recursos comuns da linguagem OO. Nenhum truque que você utilize para impressionar alguém (seu gerente ou seu amigo). Porém, podem exigir um pouco mais de trabalho do que soluções ad hoc. Todavia, esse esforço adicional vale a pena. Com ele, nós conseguimos desenvolver um software mais modularizado e flexível, de modo que facilite a manutenção. Quando a gente compreende bem e passa a saber utilizar os padrões de projetos, a gente nunca mais volta a pensar no projeto orientado a objetos da maneira com que fazíamos. Os nossos projetos vão se tornando cada vez mais flexíveis, modulares, reutilizáveis e compreensíveis – o real motivo para nós estarmos estudando esse assunto.

4 A Inspiração A ideia de padrões foi apresentada por Christopher Alexander em 1977 no contexto de Arquitetura (de prédios e cidades): “Cada padrão descreve um problema que ocorre repetidamente de novo e de novo em nosso ambiente, e então descreve a parte central da solução para aquele problema de uma forma que você pode usar esta solução um milhão de vezes, sem nunca implementa-la duas vezes da mesma forma.” - Christopher Alexander Padrões de Projeto - Introdução Exemplo de analogias: cinema e novela Cinema: um “amor impossível”, como no filme do Titanic Novela: novelas românticas do SBT (maria do bairro, maria mercedes, maria alguma coisa)

5 A ideia é reutilizar experiências bem sucedidas ao invés de redescobri-las!
Padrões de Projeto - Introdução Sempre que formos resolver um novo problema, nunca devemos partir do zero, mas sim utilizar um padrão consistente que já foi amplamente utilizado e testado por muitas pessoas, e que nós sabemos que verdadeiramente funciona. A ideia é reutilizar projetos bem sucedidos e basear os novos projetos na experiência anterior.

6 Gang of Four (GoF) E. Gamma and R. Helm and R. Johnson and J. Vlissides. Design Patterns - Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995. Padrões de Projeto - Introdução

7 Gang of Four (GoF) Passamos a ter um vocabulário comum para conversar sobre projetos de software. Soluções que não tinham nome passam a ter nome. Ao invés de discutirmos um sistema em termos de pilhas, filas, árvores e listas ligadas, passamos a falar de coisas de muito mais alto nível como Fábricas (Factory), Fachadas (Façades), Observador (Observer), Estratégia (Strategy), Objetos Singulares (Singleton), etc. A maioria dos autores eram entusiastas de Smalltalk, principalmente o Ralph Johnson. Mas acabaram baseando o livro em C++ para que o impacto junto à comunidade de C fosse maior. E o impacto foi enorme, o livro vendeu centenas de milhares de cópias. Padrões de Projeto - Introdução

8 Características Descrever e justificar soluções para problemas concretos e bem definidos (não são estratégias de implementação); Ser comprovados, isto é, devem ter sido previamente experimentados e testados; Tratar problema que ocorram em diferentes contextos; Descrever relações entre conceitos, mecanismos e estruturas existentes nos sistemas, seus pontos fortes e fracos; Ser utilizados em conjunto com outros padrões, compondo linguagens de padrões. Padrões de Projeto - Introdução

9 Os 4 elementos de um padrão
Na ótica de programação/implementação os padrões de projeto podem ser explicados como descrições de objetos e classes comunicantes que precisam ser personalizadas para resolver um problema geral de projeto num contexto particular. Padrões de projeto permitem que os desenvolvedores concentrem seus esforços nos aspectos inéditos do problema. Nome do padrão Uma referência que podemos usar para descrever um problema de projeto, suas soluções e consequências em uma ou duas palavras. Problema Descreve em que situação aplicar poderíamos aplicar o padrão. Algumas vezes isto inclui uma lista de condições que devem ser satisfeitas para que faça sentido aplicar o padrão. Solução Descreve os elementos que compõem os padrões de projetos, seus comportamentos, responsabilidades e colaborações. Consequências Os resultados e análise das vantagens e desvantagens (trade-off) da aplicação do padrão. Padrões de Projeto - Introdução Comentários Nome do padrão: Dar nome a um padrão aumenta imediatamente o nosso vocabulário de projeto. Isso nos permite projetar em um nível mais alto de abstração. Ter um vocabulário para padrões permite-nos conversar sobre eles com nossos colegas, em nossa documentação e até com nós mesmos. O nome torna mais fácil pensar sobre projetos e a comunicá-los, bem como os custos e benefícios envolvidos, a outras pessoas. Problema: Ele explica o problema e seu contexto. Pode descrever problemas de projeto específicos, tais como representar algoritmos como objetos. Pode descrever estruturas de classe ou objeto sintomáticas de um projeto inflexível. Algumas vezes, o problema incluirá uma lista de condições que devem ser satisfeitas para que faça sentido aplicar o padrão. Solução: A solução não descreve um projeto concreto ou uma implementação em particular porque um padrão é como uma “técnica” que pode ser aplicado em muitas situações diferentes. Em vez disso, o padrão fornece uma descrição abstrata de um problema de projeto e de como um arranjo geral de elementos (classes e objetos, no nosso caso) o resolve. Consequência: Embora as conseqüências sejam raramente mencionadas quando descrevemos decisões de projeto, elas são críticas para a avaliação de alternativas de projetos e para a compreensão dos custos e benefícios da aplicação do padrão. As conseqüências para o software freqüentemente envolvem balanceamento entre espaço e tempo. Elas também podem abordar aspectos sobre linguagens e implementação. Uma vez que a reutilização é freqüentemente um fator no projeto orientado a objetos, as conseqüências de um padrão incluem o seu impacto sobre a flexibilidade, a extensibilidade ou a portabilidade de um sistema. Relacionar essas conseqüências explicitamente ajuda a compreendê-las e avaliá-las.

10 Vantagens no uso de Padrões de Projeto
Evita a redescoberta de soluções; Propicia o uso de soluções corretas; Melhora a qualidade do software; Permitem que os desenvolvedores concentrem seus esforços nos aspectos inéditos do problema; Economiza esforço e tempo de desenvolvimento e manutenção; Melhora a confiabilidade do software; Conduz ao bom uso de orientação a objetos; Provê uma linguagem comum entre desenvolvedores: Compõem um vocabulário de alto nível para discussão de questões relativas ao projeto de sistemas de software. Padrões de Projeto - Introdução

11 Exemplo 1: abordagem MVC
Observer Observer Observer Padrões de Projeto - Introdução Este é um exemplo de projeto que separa visões, lógica de negócios (controller) e modelo. A abordagem MVC separa, por exemplo, visão e modelos através de noticações subscribe/notify. Esta abordagem permite ligar várias views a um modelo. Cada view se inscreve (subscribe) para receber atualizações de um modelo, que por sua vez notificará as views de que o modelo foi atualizado, de modo que as views também possam ser atualizadas. Se analisarmos com cautela, com esse projeto nós podemos separar objetos de maneira que mudanças ocorridas em um possam afetar um número qualquer de outros objetos, sem exigir que o objeto alterado (modelo, no nosso exemplo) conheça detalhes desses outros objetos.

12 Exemplo 1: Observer Padrões de Projeto - Introdução

13 Descrevendo Padrões de Projeto
Nome e classificação do padrão O nome do padrão expressa a sua própria essência de forma sucinta. Um bom nome é vital, porque ele se tornará parte do seu vocabulário de projeto. Intenção e objetivo É uma curta declaração que responde às seguintes questões: o que faz o padrão de projeto? Quais os seus princípios e sua intenção? Que tópico ou problema particular de projeto ele trata? Também conhecido como Outros nomes bem conhecidos para o padrão, se existirem. Motivação Um cenário que ilustra um problema de projeto e como as estruturas de classes e objetos no padrão solucionam o problema. Padrões de Projeto - Introdução

14 Descrevendo Padrões de Projeto
Aplicabilidade Quais são as situações nas quais o padrão de projeto pode ser aplicado? Que exemplos de maus projetos ele pode tratar? Como você pode reconhecer essas situações? Estrutura Uma representação gráfica das classes do padrão usando uma notação baseada na Object Modeling Technique (OMT) Participantes As classes e/ou objetos que participam do padrão de projeto e suas responsabilidades. Colaborações Como as classes participantes colaboram para executar suas responsabilidades. Padrões de Projeto - Introdução

15 Descrevendo Padrões de Projeto
Consequências Como o padrão suporta a realização de seus objetivos? Quais são os seus custos e benefícios e os resultados da sua utilização? Que aspecto da estrutura de um sistema ele permite variar independentemente? Implementação Que armadilhas, sugestões ou técnicas você precisa conhecer quando da implementação do padrão? Existem considerações específicas de linguagem? Exemplo de código Usos conhecidos Exemplos do padrão encontrados em sistemas reais. Padrões relacionados Que padrões de projeto estão intimamente relacionados com este? Quais são as diferenças importantes? Com quais outros padrões este deveria ser usado? Padrões de Projeto - Introdução

16 Tipos de Padrões de Projeto
Categorias de Padrões do GoF Padrões de criação Padrões estruturais Padrões comportamentais Padrões de Projeto - Introdução

17 Classificação Padrões de Criação
Padrões responsáveis pelo processo de criação dos objetos; Abstraem o processo de instanciação; Tornam um sistema independente da forma como os objetos são criados, compostos e representados. Padrões de Projeto - Introdução Por exemplo, através de um método create() podemos criar vários tipos de objetos. E não somente através dos construtores específicos desses objetos... Mais detalhes nas aulas dos padrões, de forma específica.

18 Classificação Padrões Estruturais
Lidam com a composição de classes ou objetos para formar grandes estruturas no sistema. Padrões de Projeto - Introdução

19 Classificação Padrões Comportamentais
Caracterizam a forma como classes ou objetos interagem e distribuem responsabilidade. Padrões de Projeto - Introdução

20 Cardápio Abstract Factory Builder Factory Method Prototype Singleton
Adapter Bridge Composite Decorator Facade Flyweight Proxy Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Method Visitor Padrões de Projeto - Introdução Padrões de Criação Padrões Estruturais Padrões de Comportamento

21 Exercício Proposto Qual a importância dos padrões de projeto? Por que usar padrões de projetos? Quais são as vantagens? Quais são os três tipos de padrões e quais as diferenças entre eles? Padrões de Projeto - Introdução

22 Para pesquisar em casa Dê uma olhada no GoF ou no Use a Cabeça! Padrões de Projetos a biblioteca deve possuir algumas cópias! Buscar por “GoF patterns” no google Minha recomendação para quem está iniciando nesse tema é o da serie Use a Cabeça – Padrões de Projetos. Padrões de Projeto - Introdução O Use a Cabeça é bem mais didático do que o GoF. Para iniciantes, recomendaria ele.

23 Referências E. Gamma and R. Helm and R. Johnson and J. Vlissides. Design Patterns - Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995. Notas de Aula do Prof. Nécio Lima Veras Padrões de Projeto - Introdução


Carregar ppt "1 - Introdução a Padrões de Projeto"

Apresentações semelhantes


Anúncios Google