Orientação a Objetos
Princípios e Padrões
Quem sou eu?
‣ Programador no Glio
‣ Trabalhei na Dafiti, Emprego Ligado e Tripda
‣ Não mexo com PHP faz exatamente 1 ano
‣...
Agenda
‣ Uma breve introdução a OOP
‣ Os primos pobres do S.O.L.I.D
‣ Padrões de projeto (GoF)
O que é Orientação a
Objetos?
O método é apoiado por
quatro pilares
Abstração
Abstração
Onde podemos errar?
“If a precondition is violated, this means
that a client has not satisfied its part of
the bargain, and hence the server
c...
Encapsulamento
Encapsulamento
Onde podemos errar?
“No part of a complex system should
depend on the internal details of any
other part”
Ingalls, D.
Modularidade
Modularidade
Onde podemos errar?
“The overall goal of the decomposition
into modules is the reduction of
software cost by allowing modules to be
designed a...
Hierarquia
Hierarquia
Onde podemos errar?
“Inheritance makes it possible to define
new software in the same way we
introduce any concept to a newcomer,
by comparing...
O que é um objeto?
Propriedades de um
objeto
‣ Estado
‣ Comportamento
‣ Identidade
“The state of an object encompasses all
of the (usually static) properties of the
object plus the current (usually dynamic...
“The state of an object represents the
cumulative results of its behavior.”
Grady Booch
“Assim como átomos podem existir
repetidas vezes, a identidade possibilita
que múltiplas instâncias possam
coexistir.”
Um ...
Objetos não são sacos
de dados!
Princípios
Least Astonishment
Command Query
Separation
Tell don’t ask
Law of Demeter
Padrões
Decorator
Strategy
Chain of Responsibility
Composite
Template Method
Facade
Dúvidas?
Avalie a palestra!
Lista de imagens
‣ Builders: https://flic.kr/p/mjweU
‣ Ikebana: https://flic.kr/p/6P7McX
‣ Boundary: https://flic.kr/p/3QrzLy...
Referências
‣ Tell don’t ask: https://pragprog.com/articles/tell-dont-ask
‣ OOP: Object-Oriented Analysis and Design with ...
OOP: Princípios e Padroes
OOP: Princípios e Padroes
OOP: Princípios e Padroes
OOP: Princípios e Padroes
OOP: Princípios e Padroes
OOP: Princípios e Padroes
OOP: Princípios e Padroes
Próximos SlideShares
Carregando em…5
×

OOP: Princípios e Padroes

187 visualizações

Publicada em

Palestra sobre os pilares que moldam e constroem a Programação Orientada a Objetos (OOP pros íntimos) além do conceito do que é um objeto e quais suas propriedades. A palestra ainda conta com uma relação de princípios e padrões de projeto que ajudam a detectar quebra de algum dos pilares do paradigma e como e quando utiliza-los.

Publicada em: Software
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
187
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
1
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

OOP: Princípios e Padroes

  1. 1. Orientação a Objetos Princípios e Padrões
  2. 2. Quem sou eu? ‣ Programador no Glio ‣ Trabalhei na Dafiti, Emprego Ligado e Tripda ‣ Não mexo com PHP faz exatamente 1 ano ‣ Ruby ‣ @nelson_senna
  3. 3. Agenda ‣ Uma breve introdução a OOP ‣ Os primos pobres do S.O.L.I.D ‣ Padrões de projeto (GoF)
  4. 4. O que é Orientação a Objetos?
  5. 5. O método é apoiado por quatro pilares
  6. 6. Abstração
  7. 7. Abstração Onde podemos errar?
  8. 8. “If a precondition is violated, this means that a client has not satisfied its part of the bargain, and hence the server cannot proceed reliably. Similarly, if a postcondition is violated, this means that a server has not carried out its part of the contract, and so its clients can no longer trust the behavior of the server.” Grady Booch
  9. 9. Encapsulamento
  10. 10. Encapsulamento Onde podemos errar?
  11. 11. “No part of a complex system should depend on the internal details of any other part” Ingalls, D.
  12. 12. Modularidade
  13. 13. Modularidade Onde podemos errar?
  14. 14. “The overall goal of the decomposition into modules is the reduction of software cost by allowing modules to be designed and revised independently.... Each module's structure should be simple enough that it can be understood fully;” Britton and Parnas
  15. 15. Hierarquia
  16. 16. Hierarquia Onde podemos errar?
  17. 17. “Inheritance makes it possible to define new software in the same way we introduce any concept to a newcomer, by comparing it with something that is already familiar” Cox, B.
  18. 18. O que é um objeto?
  19. 19. Propriedades de um objeto ‣ Estado ‣ Comportamento ‣ Identidade
  20. 20. “The state of an object encompasses all of the (usually static) properties of the object plus the current (usually dynamic) values of each of these properties.” Grady Booch
  21. 21. “The state of an object represents the cumulative results of its behavior.” Grady Booch
  22. 22. “Assim como átomos podem existir repetidas vezes, a identidade possibilita que múltiplas instâncias possam coexistir.” Um troxa aí
  23. 23. Objetos não são sacos de dados!
  24. 24. Princípios
  25. 25. Least Astonishment
  26. 26. Command Query Separation
  27. 27. Tell don’t ask
  28. 28. Law of Demeter
  29. 29. Padrões
  30. 30. Decorator
  31. 31. Strategy
  32. 32. Chain of Responsibility
  33. 33. Composite
  34. 34. Template Method
  35. 35. Facade
  36. 36. Dúvidas?
  37. 37. Avalie a palestra!
  38. 38. Lista de imagens ‣ Builders: https://flic.kr/p/mjweU ‣ Ikebana: https://flic.kr/p/6P7McX ‣ Boundary: https://flic.kr/p/3QrzLy ‣ Modularity: https://flic.kr/p/9sdBqQ ‣ Hierarchy: https://flic.kr/p/fgGtcP ‣ Objects: https://flic.kr/p/AD4FMh
  39. 39. Referências ‣ Tell don’t ask: https://pragprog.com/articles/tell-dont-ask ‣ OOP: Object-Oriented Analysis and Design with Applications - Grady Booch et al ‣ Law of Demeter: http://www.ccs.neu.edu/research/demeter/demeter- method/LawOfDemeter/paper-boy/demeter.pdf ‣ CQS: http://martinfowler.com/bliki/CommandQuerySeparation.html ‣ Least Astonishment: http://c2.com/cgi/wiki?PrincipleOfLeastAstonishment ‣ Design Patterns: Design Patterns: Elements of Reusable Object-Oriented Software - Gamma et al ‣ Decorator: https://8thlight.com/blog/doug-bradbury/2016/07/18/not-a- decorator-ruby.html ‣ Template Method: https://medium.com/ruby-on-rails/what-i-learned-from- sandi-metz-9d0c94347b7f#.2y8u1prb4

×