Programação Orientada a Objetos - Pós Graduação - aula 1

841 visualizações

Publicada em

Slides da primeira aula de Programação Orientada a Objetos no curso de Pós Graduação em Análise e Desenvolvimento Aplicados à Gestão Empresarial.

Publicada em: Tecnologia
  • Seja o primeiro a comentar

Programação Orientada a Objetos - Pós Graduação - aula 1

  1. 1. Programação Orientada a Objetos Introdução Pós Graduação em Análise e Desenvolvimento de Sistemas Aplicados à Gestão Empresarial INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TRIÂNGULO MINEIRO – Campus Uberlândia Centro Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
  2. 2. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Pré Requisitos • Este curso não é um guia básico de Orientação a Objetos; • Caso seja necessário rever os conceitos básicos de Orientação a Objetos, recomendo a apostila “Java e Orientação a Objetos”, criada pela Caelum. https://www.caelum.com.br/apostilas/
  3. 3. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Pré Requisitos • Para as aulas deste curso, será necessário a instalação da JDK 8(www.oracle.com) • Também deverá ser instalado o Eclipse IDE for Java EE developers (www.eclipse.org)
  4. 4. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Algumas Linguagens que utilizam o paradigma POO
  5. 5. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Linhas de código comitadas no Sourceforge
  6. 6. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Linguagens mais populares de 2014
  7. 7. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Introdução • Em linguagens mais antigas, códigos eram criados em um único bloco, usando gotos; • A programação estruturada surgiu com comandos iterativos como loops, funções, etc.. • A programação orientada a objetos permitiu estruturar a lógica relacionada a um conjunto de dados junto com os mesmos, desacoplando componentes, obtendo reúso e flexibilidade.
  8. 8. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Introdução • Alunos saem da graduação sabendo o que são classes, como usar mecanismo de herança,etc.. • Conhecer polimorfismo, herança, encapsulamento, classe e objeto é apenas o primeiro passo para criar um projeto POO; • Existe muito código procedural disfarçado de orientado a objeto.
  9. 9. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Introdução • Aprender os conceitos de POO é fácil, o problema é modelar o sistema.
  10. 10. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Pensamento Procedural • O desenvolvedor pensa o tempo todo em escrever o melhor algoritmo possível para resolver o problema.
  11. 11. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Piadas comuns do dia-a-dia • Classes “sistema”; • Classes “struct”; • “Herança maldita”; • “Tá amarrado!” • “Classe sabe tudo” • “Bad Smells”
  12. 12. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Perigos procedurais • Diagrama de Sequência OO vs Estruturado
  13. 13. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Perigos procedurais • Maior foco nas classes e nas mensagens trocadas entre estas, ao invés das tabelas e o modelo relacional.
  14. 14. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Pensamento “OO” • Pensa-se no projeto de classes, em como elas se encaixam e como elas são estendidas; • Desenhar cada peça de um quebra-cabeça e pensar em como todas elas se encaixarão juntas; • Cada classe como uma peça do quebra- cabeça, e estas precisam se encaixar e trabalhar juntas.
  15. 15. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Problemas... • Projetos de classes são difíceis de mudar e tudo parece um tapete de dominós, onde uma mudança é propagada imediatamente para a próxima classe; • Uma mudança em um ponto específico do sistema quebra muitos outros pontos;
  16. 16. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Problemas... • Muitos módulos são impossíveis de serem reutilizados e só servem para aquele ponto específico em que foi criado, forçando o desenvolvedor a repetir código; • Se o código exige que uma mudança seja feita em vários pontos diferentes para que ela seja propagada, talvez você esteja passando por um problema de projeto.
  17. 17. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Princípios OO Evite o modelo anêmico; Aberto-Fechado (OCP); Não se Repita (DRY); Responsabilidade Única (SRP); Encapsule o que varia; Substituição de Liskov (LSP); Programe para interface e não para implementação; Componha comportamentos; Evite Herança, favoreça Composição; Favoreça Imutabilidade e Simplicidade.
  18. 18. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Alguns Padrões de Projeto MVC; Strategy; Factory; Template Method; Observer; Builder; Proxy; Decorator, Chains of Responsability, etc..etc..etc..
  19. 19. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Guias
  20. 20. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Guias http://www.casadocodigo.com.br
  21. 21. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Aquecendo as turbinas
  22. 22. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Referências • ANICHE, Maurício. Orientação a objetos e SOLID para Ninjas. Casa do Código, 2015; • GUERRA, Eduardo. Design Patterns com Java. Casa do Código, 2014; • “LARMAN, Craig – Utilizando UML e Padrões 3ª Edição. Bookman, 2007”.

×