Orientação a Objetos na prática

289 visualizações

Publicada em

Muitos conceitos de orientação a objetos são muito abstratos e de difícil compreensão para iniciantes a até mesmo para profissionais mais experientes. Nesta palestra iremos desmistificar alguns conceitos e tentar entender a importância da OO para um bom design de sua aplicação.

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

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

Nenhuma nota no slide

Orientação a Objetos na prática

  1. 1. Orientação a Objetos na prática Paulo Moura
  2. 2. O mundo é procedural
  3. 3. O mundo também é orientado a objetos
  4. 4. Objetos Interações gera Comportamentos
  5. 5. Mas OO é sobre modelar o mundo real?
  6. 6. Servlet API
  7. 7. Servlet API
  8. 8. Criar um design OO é parar de pensar o mundo como um conjunto de procedimentos e começar a vê-lo como uma série de troca de mensagens entre objetos
  9. 9. Design
  10. 10. Design
  11. 11. Design fácil de mudar
  12. 12. Design fácil de mudar prazer de escrever
  13. 13. Design fácil de mudar prazer de escrever flexível, adaptável
  14. 14. Design fácil de mudar prazer de escrever flexível, adaptável componetizável (composable)
  15. 15. Dependências
  16. 16. Dependências adas a objetos são feitas de partes que interagem para produzir comp
  17. 17. Programe orientado a interface, não à implementação
  18. 18. public class FuncionarioDao { public void gravaEmLote(ArrayList<Funcionario> funcionarios) { ... } }
  19. 19. public class FuncionarioDao { public void gravaEmLote(Collection<Funcionario> funcionarios) { ... } }
  20. 20. public class FuncionarioDao { public void gravaEmLote(Collection<Funcionario> funcionarios) { ... } }
  21. 21. Tell, don’t ask
  22. 22. def street_name(user) if user.address user.address.street_name else 'No street name on file' end end
  23. 23. def street_name(user) user.address.street_name end class User def address @address || NullAddress.new end end class NullAddress def street_name 'No street name on file' end end
  24. 24. def street_name(user) user.address.street_name end class User def address @address || NullAddress.new end end class NullAddress def street_name 'No street name on file' end end
  25. 25. def street_name(user) user.address.street_name end class User def address @address || NullAddress.new end end class NullAddress def street_name 'No street name on file' end end
  26. 26. Seus módulos devem ser abertos para a extensão e fechados para modificação
  27. 27. Princípio da Substituição de Liskov
  28. 28. Princípio da Segregação de interfaces lientes não devem ser forçados a depender de interfaces que não usam
  29. 29. Princípio da inversão de dependência
  30. 30. Obrigado! Paulo moura @paulociecomp

×