Upload
carlos-eduardo-dantas
View
350
Download
0
Embed Size (px)
Citation preview
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]
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/
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)
Prof Carlos Eduardo Dantas – [email protected]
Algumas Linguagens que utilizam o paradigma POO
Prof Carlos Eduardo Dantas – [email protected]
Linhas de código comitadas no Sourceforge
Prof Carlos Eduardo Dantas – [email protected]
Linguagens mais populares de 2014
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.
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.
Prof Carlos Eduardo Dantas – [email protected]
Introdução
• Aprender os conceitos de POO é fácil, o problema é modelar o sistema.
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.
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”
Prof Carlos Eduardo Dantas – [email protected]
Perigos procedurais
• Diagrama de Sequência OO vs Estruturado
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.
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.
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;
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.
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.
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..
Prof Carlos Eduardo Dantas – [email protected]
Guias
Prof Carlos Eduardo Dantas – [email protected]
Aquecendo as turbinas
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”.