Projeto e implementação de software utilizando padrões de projeto<br />Antonio Passos<br />
Agenda<br />De onde vêm os padrões? <br />Conceito de padrão<br />Por que estudar padrões?<br />Alguns padrões conhecidos ...
De onde vêm os padrões?<br />Algo em comum aqui?<br />Escadaria Selarón - RJ<br />Biblioteca Nacional - RJ<br />
De onde vêm os padrões?<br />Pirâmide de Kukulcán - México<br />
De onde vêm os padrões?<br />Pirâmide de Kukulcán - México<br />
De onde vêm os padrões?<br />A beleza está realmente nos olhos de quem vê?<br />Ou existe base objetiva para tal julgament...
De onde vêm os padrões?<br />
É possível projetar sistemas de forma metódica, racional, explicável?<br />
Conceitos de padrões<br />Par nomeado problema/solução que pode ser aplicado em novos contextos, com conselhos sobre sua a...
Por que estudar padrões?<br />Melhorar a comunicação da equipe e o aprendizado individual<br />Aumentar a capacidade de mo...
Gangue dos Quatro<br />
Arquitetura de aplicações corporativas<br />
GRASP<br />
Padrões GRASP<br />Padrões de Princípios Gerais para Atribuição de Responsabilidade (General Responsibility Assignment Sof...
Padrões GRASPEspecialista na informação<br />Problema<br />Qual é o princípio básico de atribuição de responsabilidades a ...
Padrões GRASPCriador<br />Problema<br />Quem deve ser responsável pela criação de uma nova instância de uma classe?<br />S...
Padrões GRASPAcoplamento fraco<br />Problema<br />Como favorecer a dependência baixa, o pequeno impacto à mudança e aument...
Padrões GRASPAcoplamento fraco<br />Opção 01<br />Opção 02<br />
Padrões GRASPCoesão alta<br />Problema<br />Como manter a complexidade sob controle?<br />Solução<br />Atribuir uma respon...
Padrões GRASP<br />Coesão alta<br />Como manter a complexidade sob controle?<br /><ul><li>Acoplamento baixo
Como favorecer a dependência baixa, o pequeno impacto à mudança e aumentar a reutilização?</li></li></ul><li>Padrões GRASP...
Como tomar decisões de projeto?<br />Qual dessas implementações é a melhor?<br /><ul><li>Sob quais circunstâncias esta alt...
Qual dessas circunstâncias é a que mais se assemelha ao meu domínio do problema?</li></li></ul><li>Pra saber mais<br />JAV...
Obrigado<br />Antonio Passos<br /><ul><li>E-mail: antoniopassos@gmail.com
Próximos SlideShares
Carregando em…5
×

Projeto e Implementação de Software Utilizando Padrões

6.305 visualizações

Publicada em

Apresentação feita no Java EE Day que aconteceu em Goiânia/GO em 05/12/2009.

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
6.305
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1.377
Ações
Compartilhamentos
0
Downloads
138
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Projeto e Implementação de Software Utilizando Padrões

  1. 1. Projeto e implementação de software utilizando padrões de projeto<br />Antonio Passos<br />
  2. 2. Agenda<br />De onde vêm os padrões? <br />Conceito de padrão<br />Por que estudar padrões?<br />Alguns padrões conhecidos <br />Padrões GRASP<br />Como tomar decisões de projeto<br />Pra saber mais<br />
  3. 3. De onde vêm os padrões?<br />Algo em comum aqui?<br />Escadaria Selarón - RJ<br />Biblioteca Nacional - RJ<br />
  4. 4. De onde vêm os padrões?<br />Pirâmide de Kukulcán - México<br />
  5. 5. De onde vêm os padrões?<br />Pirâmide de Kukulcán - México<br />
  6. 6. De onde vêm os padrões?<br />A beleza está realmente nos olhos de quem vê?<br />Ou existe base objetiva para tal julgamento?<br />
  7. 7. De onde vêm os padrões?<br />
  8. 8. É possível projetar sistemas de forma metódica, racional, explicável?<br />
  9. 9. Conceitos de padrões<br />Par nomeado problema/solução que pode ser aplicado em novos contextos, com conselhos sobre sua aplicação em novas situações e uma discussão sobre as consequências de seu uso<br /><ul><li>Padrões constituem um repertório de princípios gerais e de soluções idiomáticas elaborado por desenvolvedores experientes que os guiam na construção de software</li></ul>É uma técnica, uma diretriz<br />
  10. 10. Por que estudar padrões?<br />Melhorar a comunicação da equipe e o aprendizado individual<br />Aumentar a capacidade de modificação melhorada do código<br />Reutilizar soluções<br />Decidir se disponho do projeto certo, não apenas de um projeto que funcione<br />
  11. 11. Gangue dos Quatro<br />
  12. 12. Arquitetura de aplicações corporativas<br />
  13. 13. GRASP<br />
  14. 14. Padrões GRASP<br />Padrões de Princípios Gerais para Atribuição de Responsabilidade (General Responsibility Assignment Software Patterns)<br />
  15. 15. Padrões GRASPEspecialista na informação<br />Problema<br />Qual é o princípio básico de atribuição de responsabilidades a objetos?<br />Solução<br />Atribuir a responsabilidade ao especialista na informação: a classe que tem a informação necessária para satisfazer a responsabilidade.<br />Benefícios<br />O encapsulamento de informações é mantido.<br />São estimuladas definições de classes « leves », de maior coesão, mais fáceis de compreender e manter.<br />
  16. 16. Padrões GRASPCriador<br />Problema<br />Quem deve ser responsável pela criação de uma nova instância de uma classe?<br />Solução<br />Atribua à classe B a responsabilidade de criar uma instância da classe A se uma das seguintes condições for verdadeira:<br />B agrega objetos de A;<br />B contém objetos de A;<br />B registra instâncias de objetos de A;<br />B usa de maneira muito próxima objetos de A;<br />B tem os dados de iniciação que serão passados para A quando ele for criado.<br />Benefícios<br />Favorece o acoplamento fraco<br />
  17. 17. Padrões GRASPAcoplamento fraco<br />Problema<br />Como favorecer a dependência baixa, o pequeno impacto à mudança e aumentar a reutilização?<br />Solução<br />Atribuir uma responsabilidade de maneira que o acoplamento permaneça fraco.<br />Benefícios<br />Não é afetado por mudanças em outros componentes;<br />É simples de entender isoladamente;<br />É conveniente para reutilização<br />
  18. 18. Padrões GRASPAcoplamento fraco<br />Opção 01<br />Opção 02<br />
  19. 19. Padrões GRASPCoesão alta<br />Problema<br />Como manter a complexidade sob controle?<br />Solução<br />Atribuir uma responsabilidade de forma que a coesão permaneça alta.<br />Benefícios<br />Mais clareza e facilidade de compreensão no projeto;<br />Simplificação da manutenção e do acréscimo de melhorias;<br />Favorecimento do acoplamento fraco;<br />Aumento do potencial de reutilização<br />
  20. 20. Padrões GRASP<br />Coesão alta<br />Como manter a complexidade sob controle?<br /><ul><li>Acoplamento baixo
  21. 21. Como favorecer a dependência baixa, o pequeno impacto à mudança e aumentar a reutilização?</li></li></ul><li>Padrões GRASPControlador<br />Problema<br />Quem deve ser responsável por tratar um evento de sistema?<br />Solução<br />Atribuir a responsabilidade de receber ou tratar uma mensagem de um evento do sistema a uma classe que represente uma das seguintes escolhas:<br />Represente todo o sistema, dispositivo ou subsistema;<br />Represente um cenário de um caso de uso dentro do qual ocorra o evento do sistema<br />Benefícios<br />Aumento das possibilidades de reutilização e de interfaces plugáveis;<br />Conhecer o estado do caso de uso<br />
  22. 22. Como tomar decisões de projeto?<br />Qual dessas implementações é a melhor?<br /><ul><li>Sob quais circunstâncias esta alternativa seria melhor que a outra?
  23. 23. Qual dessas circunstâncias é a que mais se assemelha ao meu domínio do problema?</li></li></ul><li>Pra saber mais<br />JAVA DESIGN PATTERNS<br />http://www.allapplabs.com/java_design_patterns/java_design_patterns.htm<br />Java Design Patterns At a Glance<br />http://www.javacamp.org/designPattern/<br />Java Design Patterns Reference and Examples<br />http://www.fluffycat.com/Java-Design-Patterns/<br />
  24. 24. Obrigado<br />Antonio Passos<br /><ul><li>E-mail: antoniopassos@gmail.com
  25. 25. Twitter: http://twitter.com/antoniopassos
  26. 26. Blog: http://blog.antoniopassos.pro.br
  27. 27. EAD: http://ead.antoniopassos.net</li>

×