Slides

Orientação a Objetos na prática

Description
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.
Categories
Published
of 41
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Related Documents
Share
Transcript
  • 1. Orientação a Objetos na prática Paulo Moura
  • 2. O mundo é procedural
  • 3. O mundo também é orientado a objetos
  • 4. Objetos Interações gera Comportamentos
  • 5. Mas OO é sobre modelar o mundo real?
  • 6. Servlet API
  • 7. Servlet API
  • 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. Design
  • 10. Design
  • 11. Design fácil de mudar
  • 12. Design fácil de mudar prazer de escrever
  • 13. Design fácil de mudar prazer de escrever flexível, adaptável
  • 14. Design fácil de mudar prazer de escrever flexível, adaptável componetizável (composable)
  • 15. Dependências
  • 16. Dependências adas a objetos são feitas de partes que interagem para produzir comp
  • 17. Programe orientado a interface, não à implementação
  • 18. public class FuncionarioDao { public void gravaEmLote(ArrayList<Funcionario> funcionarios) { ... } }
  • 19. public class FuncionarioDao { public void gravaEmLote(Collection<Funcionario> funcionarios) { ... } }
  • 20. public class FuncionarioDao { public void gravaEmLote(Collection<Funcionario> funcionarios) { ... } }
  • 21. Tell, don’t ask
  • 22. def street_name(user) if user.address user.address.street_name else 'No street name on file' end end
  • 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. 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. 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. Seus módulos devem ser abertos para a extensão e fechados para modificação
  • 27. Princípio da Substituição de Liskov
  • 28. Princípio da Segregação de interfaces lientes não devem ser forçados a depender de interfaces que não usam
  • 29. Princípio da inversão de dependência
  • 30. Obrigado! Paulo moura @paulociecomp
  • Search
    Related Search
    We Need Your Support
    Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

    Thanks to everyone for your continued support.

    No, Thanks