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

Post on 20-Jul-2015

350 views 0 download

Transcript of 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 – carloseduardodantas@iftm.edu.br

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/

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)

Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br

Algumas Linguagens que utilizam o paradigma POO

Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br

Linhas de código comitadas no Sourceforge

Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br

Linguagens mais populares de 2014

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.

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.

Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br

Introdução

• Aprender os conceitos de POO é fácil, o problema é modelar o sistema.

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.

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”

Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br

Perigos procedurais

• Diagrama de Sequência OO vs Estruturado

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.

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.

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;

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.

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.

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

Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br

Guias

Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br

Guias

http://www.casadocodigo.com.br

Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br

Aquecendo as turbinas

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