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

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

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

1 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

2 Quem são vocês? 2 Nome ? Curso? Período? “Gosto de programar!” “Odeio programar!“ Sou o rei do Python! I Java

3 Regras do jogo Presenças e faltas – Serão registradas todas as aulas e reprovarei aluno por faltas. – if(faltas>(25/100)*aulas) situação  “reprovado” Listas de exercício valem ponto – Quem faz a lista de exercício se dá bem nas provas! 3 (recomendações a serem seguidas ao longo da disciplina)

4 Comunicação Dúvidas sobre assunto ensinado em sala  eduardolfalcao@dcx.ufpb.br eduardolfalcao@dcx.ufpb.br Grupo no facebook  Padrões de Projeto - DCX/UFPB – Dúvidas simples: data de entrega; assunto da prova; – Notícias: postagem de aulas, lista de exercícios, notas, avisos de eventual ausência, etc. Site da disciplina  http://edufalcao.me/design- patterns/http://edufalcao.me/design- patterns/ – Aulas, Calendários, Listas de Exercícios, etc. 4

5 Avaliação 2 provas + 1 projeto 5

6 Dúvidas 6

7 Momento Reflexão O que significa projetar um software? – É fácil? Não – É rápido? Não – É custoso? Sim 7

8 Momento Reflexão O que precisamos para garantir qualidade? Trabalhar de forma colaborativa REUSO Pessoas enfrentam problemas similares Pessoas resolvem esses problemas Será que soluções próprias (novas) é viável? 8

9 Design Patterns 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 9

10 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 10

11 A ideia é reutilizar experiências bem sucedidas ao invés de redescobri-las! 11

12 O que são Padrões de Projetos? 12 é uma solução geral reutilizável para um problema que ocorre com frequência dentro de um determinado contexto no projeto de software. Um padrão de projeto não é um projeto finalizado que pode ser diretamente transformado em código fonte ou de máquina é uma descrição ou modelo (template) de como resolver um problema que pode ser usado em muitas situações diferentes. Padrões são melhores práticas formalizadas que o programador pode usar para resolver problemas comuns quando projetar uma aplicação ou sistema. Padrões de projeto orientados a objeto normalmente mostram relacionamentos, interações entre classes ou objetos, sem especificar as classes ou objetos da aplicação final que estão envolvidas.

13 Padrões de Projeto – Use a Cabeça 13 Freeman, Elisabeth; Freeman, Eric. Use a Cabeça ! Padrões de Projetos (design Patterns) - 2ª Ed. Revisada. Alta Books, 2007.

14 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. 14

15 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. 15

16 Os 4 elementos de um padrão 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. 16

17 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. 17

18 Exemplo 1: abordagem MVC Observer 18

19 Exemplo 1: Observer 19

20 Descrevendo Padrões de Projeto (GoF) 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. 20

21 Descrevendo Padrões de Projeto (GoF) 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. 21

22 Descrevendo Padrões de Projeto (GoF) 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? 22

23 Tipos de Padrões de Projeto Categorias de Padrões do GoF – Padrões de criação – Padrões estruturais – Padrões comportamentais 23

24 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. 24

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

26 Classificação Padrões Comportamentais Caracterizam a forma como classes ou objetos interagem e distribuem responsabilidade. 26

27 Cardápio 1.Abstract Factory 2.Builder 3.Factory Method 4.Prototype 5.Singleton 6.Adapter 7.Bridge 8.Composite 9.Decorator 10.Facade 11.Flyweight 12.Proxy 13.Chain of Responsibility 14.Command 15.Interpreter 16.Iterator 17.Mediator 18.Memento 19.Observer 20.State 21.Strategy 22.Template Method 23.Visitor Padrões de Criação Padrões Estruturais Padrões de Comportamento 27

28 Para casa 1.Qual a importância dos padrões de projeto? Por que usar padrões de projetos? Quais são as vantagens? 2.Quais são os três tipos de padrões e quais as diferenças entre eles? 28

29 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 29


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google