Introdução a Padrões de Projetos
UnipêSistemas Para InternetAnálise de Projetos e SistemasProfessora: Carolina Santana
Equipe: Adilson, David, Iury, Ítalo, Rodrigo
Definição• “Os padrões de projeto são descrições de objetos que se comunicam e classes que são customizadas para resolver um problema genérico de design em um contexto específico”.
Gamma, Helm, Vlissides & Johnson, sobre padrões em software
•“[...]cada padrão descreve um problema que ocorre várias vezes em nosso ambiente, e então descreve a base para a solução deste problema, de maneira a permitir que esta solução seja reutilizada milhões de vezes, sem a necessidade de refazê-la.”
(ALEXANDER, 1977 apud GAMMA et al, 1995, tradução nossa).
Surgimento• A idéia de padrões foi apresentada por Christopher Alexander em 1977 no contexto de Arquitetura de prédios e cidades.
• Em 1987, Ward Cunninghan e Kent Beck propuseram os primeiros 5 padrões e os apresentaram na OOPSLA.
• Posteriormente os Padrões de Projetos (Design Patterns) são criados por Erich Gamma, John Vlissides, Ralph Jonhson e Richard Helm, conhecidos como “The Gang of Four” (“A Gangue dos Quatro) ou simplesmente GoF.
Gang of Four (GoF)• O livro descreve 23 padrões de projetos úteis.
• Referência atual sobre e para outros padrões de projeto.
Gang of Four (GoF)• Com o 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.
• 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 CC fosse maior. E o impacto foi enorme, o livro vendeu centenas de milhares de cópias.
Para que realmente servem os Padrões de Projeto?
• Servem para mostrar (ou demonstrar) soluções prontas para problemas que são comuns;
• Soluções estas que podem ser implementadas em qualquer linguagem de programação;
• Através da análise de caso e de solução de uma situação, conhecendo os padrões de projeto você pode decidir qual usar, como usar e porque usar um padrão de projeto – se realmente for conveniente para o caso em foco.
Características e Elementos de um PadrãoCaracterísticas:• Encapsulamento• Generalidade• Equilíbrio• Abstração• Abertura• Combinatoriedade
Elementos:
• Nome• Problema• Solução• Consequências
Quais as vantagens de utilizar Padrões de Projeto?
•Ajuda a remover a duplicação de código;• Simplifica a lógica;•Incrementa a flexibilidade do sistema;•Permite a implementação de soluções simples, com elegância e versatilidade;•Permite a reutilização de projetos e arquiteturas;•Torna a codificação mais acessível para novos desenvolvedores do sistema;
Quais as vantagens de utilizar Padrões de Projeto?
• Melhoram a documentação e manutenção dos sistemas existentes por fornecer uma especificação explícita das interações entre classes e objetos e a intenção de uso dos mesmos;
• Ajuda o projetista a encontrar a solução adequada de maneira mais rápida;
• Auxilia na escolha de projetos que tornam o sistema reutilizável, evitando escolhas que comprometam a reusabilidade do modelo escolhido.
Quais as vantagens de utilizar Padrões de Projeto?
• Facilita a comunicação e compreensão,pois comunicação e trabalho em equipe requerem uma base de vocabulário e um ponto de vista em comum.
Como e quando usar padrões de Projetos?
• Considere como os padrões de projeto podem solucionar os problemas do projeto;
• Examine as seções de descrição do problema de cada padrão;
• Estude os relacionamentos entre os padrões;• Estude padrões de finalidades semelhantes;• Utilize o padrão de projeto que se ajusta ao seu caso para melhorar as deficiências verificadas no seu projeto;
• É preciso ter uma visão global do seu projeto e seu funcionamento.
Classificação de padrões de projetos
• Por propósito• Criação • Estruturais • Comportamentais
• Por escopo• Classe• Objeto
Conclusões sobre Padrões de Projeto
•Tornam mais fácil reutilizar soluções bem sucedidas para construir softwares orientados a objetos de forma flexível e fácil de manter;•Reduz a complexidade do processo de projetar software.;•Possibilita aos projetistas reutilizar e empregar componentes preexistentes em sistemas futuros.
Referências• http://fabiocesar.wordpress.com/2007/10/04/padroes-de-projeto-0-introducao/ - acesso em: 15/11/2013
• http://dietinf.ifrn.edu.br/lib/exe/fetch.php?media=corpodocente:minora:disciplinas:arquitetura_de_software:slides:dp-introducao.pdf - acesso em: 15/11/2013
• http://www.cin.ufpe.br/~if718/transparencias/pdf/05-padroesGoF.pdf - acesso em: 15/11/2013
• http://francisodisi.wordpress.com/2009/10/27/introducao-a-padroes-de-projeto-design-patterns/ - acesso em: 15/11/2013
• http://www.princiweb.com.br/blog/programacao/design-patterns/o-que-sao-design-patterns.html - acesso em: 18/11/2013
• http://pt.wikipedia.org/wiki/Padr%C3%A3o_de_projeto_de_software#Hist.C3.B3ria - acesso em: 18/11/2013