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

22
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]

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

Page 1: Programação Orientada a Objetos - Pós Graduação - aula 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 – [email protected]

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

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

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 4: Programação Orientada a Objetos - Pós Graduação - aula 1

Prof Carlos Eduardo Dantas – [email protected]

Algumas Linguagens que utilizam o paradigma POO

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

Prof Carlos Eduardo Dantas – [email protected]

Linhas de código comitadas no Sourceforge

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

Prof Carlos Eduardo Dantas – [email protected]

Linguagens mais populares de 2014

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

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

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

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

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

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

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

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

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

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

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

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

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 19: Programação Orientada a Objetos - Pós Graduação - aula 1

Prof Carlos Eduardo Dantas – [email protected]

Guias

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

Prof Carlos Eduardo Dantas – [email protected]

Guias

http://www.casadocodigo.com.br

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

Prof Carlos Eduardo Dantas – [email protected]

Aquecendo as turbinas

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

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”.