programação orientada a objetos - pós graduação - aula 1
TRANSCRIPT
![Page 1: Programação Orientada a Objetos - Pós Graduação - aula 1](https://reader033.vdocuments.mx/reader033/viewer/2022042716/55abdc0c1a28abfb2f8b4659/html5/thumbnails/1.jpg)
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 – [email protected]
![Page 2: Programação Orientada a Objetos - Pós Graduação - aula 1](https://reader033.vdocuments.mx/reader033/viewer/2022042716/55abdc0c1a28abfb2f8b4659/html5/thumbnails/2.jpg)
Prof Carlos Eduardo Dantas – [email protected]
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/
![Page 3: Programação Orientada a Objetos - Pós Graduação - aula 1](https://reader033.vdocuments.mx/reader033/viewer/2022042716/55abdc0c1a28abfb2f8b4659/html5/thumbnails/3.jpg)
Prof Carlos Eduardo Dantas – [email protected]
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)
![Page 7: Programação Orientada a Objetos - Pós Graduação - aula 1](https://reader033.vdocuments.mx/reader033/viewer/2022042716/55abdc0c1a28abfb2f8b4659/html5/thumbnails/7.jpg)
Prof Carlos Eduardo Dantas – [email protected]
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.
![Page 8: Programação Orientada a Objetos - Pós Graduação - aula 1](https://reader033.vdocuments.mx/reader033/viewer/2022042716/55abdc0c1a28abfb2f8b4659/html5/thumbnails/8.jpg)
Prof Carlos Eduardo Dantas – [email protected]
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.
![Page 9: Programação Orientada a Objetos - Pós Graduação - aula 1](https://reader033.vdocuments.mx/reader033/viewer/2022042716/55abdc0c1a28abfb2f8b4659/html5/thumbnails/9.jpg)
Prof Carlos Eduardo Dantas – [email protected]
Introdução
• Aprender os conceitos de POO é fácil, o problema é modelar o sistema.
![Page 10: Programação Orientada a Objetos - Pós Graduação - aula 1](https://reader033.vdocuments.mx/reader033/viewer/2022042716/55abdc0c1a28abfb2f8b4659/html5/thumbnails/10.jpg)
Prof Carlos Eduardo Dantas – [email protected]
Pensamento Procedural
• O desenvolvedor pensa o tempo todo em escrever o melhor algoritmo possível para resolver o problema.
![Page 11: Programação Orientada a Objetos - Pós Graduação - aula 1](https://reader033.vdocuments.mx/reader033/viewer/2022042716/55abdc0c1a28abfb2f8b4659/html5/thumbnails/11.jpg)
Prof Carlos Eduardo Dantas – [email protected]
Piadas comuns do dia-a-dia
• Classes “sistema”;
• Classes “struct”;
• “Herança maldita”;
• “Tá amarrado!”
• “Classe sabe tudo”
• “Bad Smells”
![Page 12: Programação Orientada a Objetos - Pós Graduação - aula 1](https://reader033.vdocuments.mx/reader033/viewer/2022042716/55abdc0c1a28abfb2f8b4659/html5/thumbnails/12.jpg)
Prof Carlos Eduardo Dantas – [email protected]
Perigos procedurais
• Diagrama de Sequência OO vs Estruturado
![Page 13: Programação Orientada a Objetos - Pós Graduação - aula 1](https://reader033.vdocuments.mx/reader033/viewer/2022042716/55abdc0c1a28abfb2f8b4659/html5/thumbnails/13.jpg)
Prof Carlos Eduardo Dantas – [email protected]
Perigos procedurais
• Maior foco nas classes e nas mensagens trocadas entre estas, ao invés das tabelas e o modelo relacional.
![Page 14: Programação Orientada a Objetos - Pós Graduação - aula 1](https://reader033.vdocuments.mx/reader033/viewer/2022042716/55abdc0c1a28abfb2f8b4659/html5/thumbnails/14.jpg)
Prof Carlos Eduardo Dantas – [email protected]
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.
![Page 15: Programação Orientada a Objetos - Pós Graduação - aula 1](https://reader033.vdocuments.mx/reader033/viewer/2022042716/55abdc0c1a28abfb2f8b4659/html5/thumbnails/15.jpg)
Prof Carlos Eduardo Dantas – [email protected]
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;
![Page 16: Programação Orientada a Objetos - Pós Graduação - aula 1](https://reader033.vdocuments.mx/reader033/viewer/2022042716/55abdc0c1a28abfb2f8b4659/html5/thumbnails/16.jpg)
Prof Carlos Eduardo Dantas – [email protected]
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.
![Page 17: Programação Orientada a Objetos - Pós Graduação - aula 1](https://reader033.vdocuments.mx/reader033/viewer/2022042716/55abdc0c1a28abfb2f8b4659/html5/thumbnails/17.jpg)
Prof Carlos Eduardo Dantas – [email protected]
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.
![Page 18: Programação Orientada a Objetos - Pós Graduação - aula 1](https://reader033.vdocuments.mx/reader033/viewer/2022042716/55abdc0c1a28abfb2f8b4659/html5/thumbnails/18.jpg)
Prof Carlos Eduardo Dantas – [email protected]
Alguns Padrões de Projeto
MVC;
Strategy;
Factory;
Template Method;
Observer;
Builder;
Proxy;
Decorator,
Chains of Responsability, etc..etc..etc..
![Page 22: Programação Orientada a Objetos - Pós Graduação - aula 1](https://reader033.vdocuments.mx/reader033/viewer/2022042716/55abdc0c1a28abfb2f8b4659/html5/thumbnails/22.jpg)
Prof Carlos Eduardo Dantas – [email protected]
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”.