SOLID Principles

1.209 visualizações

Publicada em

Apresentação sobre os princípios SOLID que fiz no Agile Brazil 2012 em São Paulo.
Tenha orgulho do seu código. Aprenda SOLID!
Os princípios SOLID são cinco princípios básicos de programação e design orientados a objeto, introduzidos por Uncle Bob no início de 2000. Aplicados em conjunto, estes princípios o tornarão um desenvolvedor diferenciado, capaz de escrever um código extensível, coeso e de fácil manutenção.

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

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

Nenhuma nota no slide

SOLID Principles

  1. 1. S.O.L.I..D Principles Por Ismael Soares @ismaelsoaresz Agile Brazil 2012domingo, 9 de setembro de 12
  2. 2. SOLID são princípios básicos (boas práticas) da Programação Orientada a Objetodomingo, 9 de setembro de 12
  3. 3. Não é exclusividade de nenhuma linguagem de programaçãodomingo, 9 de setembro de 12
  4. 4. Por que devo saber SOLID?domingo, 9 de setembro de 12
  5. 5. Você precisa fazer a coisa certa do jeito certo!domingo, 9 de setembro de 12
  6. 6. domingo, 9 de setembro de 12
  7. 7. S ingle responsibility Principle O pen/Closed L iskov Substitution Principle I nterface Segregation D ependency Inversion Principledomingo, 9 de setembro de 12
  8. 8. 1 Single responsability Principledomingo, 9 de setembro de 12
  9. 9. Principle Uma Classe deve possuir apenas um motivo para ser alterada, ou seja, possuir apenas uma responsabilidade.domingo, 9 de setembro de 12
  10. 10. O que faz esta classe?domingo, 9 de setembro de 12
  11. 11. Gera Frete e Ajusta o Contador e Obtem Nota e...domingo, 9 de setembro de 12
  12. 12. Devemos separar as funcionalidades em classes distintas. public class GeradorDeNotaFiscalDeFrete {} public class AjustadorDeContadorDeNumeracaoDeNotaFiscal {} public class ConsultaDeNotaFiscalService {} ...domingo, 9 de setembro de 12
  13. 13. Porque quando você fizer uma alteração, vai procurar a classe responsável.domingo, 9 de setembro de 12
  14. 14. 2 Open/Closeddomingo, 9 de setembro de 12
  15. 15. Principle Uma classe deve estar aberta para extensão, mas fechada para alteraçãodomingo, 9 de setembro de 12
  16. 16. Crédo... que diabos é isso?domingo, 9 de setembro de 12
  17. 17. domingo, 9 de setembro de 12
  18. 18. domingo, 9 de setembro de 12
  19. 19. Tem alguma coisa errada com este código?domingo, 9 de setembro de 12
  20. 20. Como incluir uma nova Forma sem alterar o método que a desenha?domingo, 9 de setembro de 12
  21. 21. Lascô...domingo, 9 de setembro de 12
  22. 22. domingo, 9 de setembro de 12
  23. 23. domingo, 9 de setembro de 12
  24. 24. domingo, 9 de setembro de 12
  25. 25. domingo, 9 de setembro de 12
  26. 26. 3 Liskov Substitution Principledomingo, 9 de setembro de 12
  27. 27. Principle "Se você pode invocar um método q() de uma classe T (base), deve poder também invocar o método q() de uma classe T(derivada) que é derivada com herança de T (base)."domingo, 9 de setembro de 12
  28. 28. Agora Lascô de vez!domingo, 9 de setembro de 12
  29. 29. Deve ser possível substituir uma classe base por uma classe derivada em qualquer ponto do códigodomingo, 9 de setembro de 12
  30. 30. Uffa! Agora entendi...domingo, 9 de setembro de 12
  31. 31. Exemplodomingo, 9 de setembro de 12
  32. 32. Correto!domingo, 9 de setembro de 12
  33. 33. 4 Interface Segregationdomingo, 9 de setembro de 12
  34. 34. Principle É melhor ter muitas interfaces específicas do que ter uma interface genérica.domingo, 9 de setembro de 12
  35. 35. Vamos ao exemplo...domingo, 9 de setembro de 12
  36. 36. Seu gerentedomingo, 9 de setembro de 12
  37. 37. E lasquera a fábrica tá bondando!domingo, 9 de setembro de 12
  38. 38. Correto!domingo, 9 de setembro de 12
  39. 39. Correto!domingo, 9 de setembro de 12
  40. 40. 5 Dependency Inversion Principledomingo, 9 de setembro de 12
  41. 41. Principle Módulos de alto nível não devem depender de módulos de baixo nível, devem depender de abstrações.domingo, 9 de setembro de 12
  42. 42. Tá... i dai?domingo, 9 de setembro de 12
  43. 43. Abstrações não devem depender de detalhes, detalhes devem depender de abstrações.domingo, 9 de setembro de 12
  44. 44. Exemplodomingo, 9 de setembro de 12
  45. 45. domingo, 9 de setembro de 12
  46. 46. Quebrando o princípiodomingo, 9 de setembro de 12
  47. 47. Corretodomingo, 9 de setembro de 12
  48. 48. domingo, 9 de setembro de 12
  49. 49. Obrigadodomingo, 9 de setembro de 12
  50. 50. References http://www.slideshare.net/fullscreen/andrefaria/solid-princpio-da-responsabilidade-nica/1 http://viniciusquaiato.com/blog/srp-single-responsibility-principle/ http://en.wikipedia.org/wiki/Single_responsibility_principle http://www.macoratti.net/11/05/oop_opc1.htm http://www.javacodegeeks.com/2011/11/solid-liskov-substitution-principle.html http://www.oodesign.com/interface-segregation-principle.htmldomingo, 9 de setembro de 12

×