oo presentation básica

48
Orientação à Objetos primeiros passos By Lorena [email protected]

Upload: lorena-de-souza

Post on 15-Apr-2017

131 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Oo presentation básica

Orientação à Objetos primeiros passos

By Lorena

[email protected]

Page 2: Oo presentation básica

Developer

5 years

Foco

TW

Tecnologia + Clean Code Princípios

Lorena é desenvolvedora na ThoughtWorks e depois de 5 anos desenvolvendo em projetos bem interessantes, ela anda estudando intensamente princípios como Orientação à Objetos, SOLID, Clean Code e TDD.

Page 3: Oo presentation básica

Como podemos tornar desenvolvedoras mais consciente?

Porque é IMPORTANTE conhecer mais sobre

Design Orientado à Objetos?

Page 4: Oo presentation básica

Design de Software bem feito com OO

Testes mais eficazes e maior cobertura

Manutenções mais fáceis e rápidas

Entregasrápidas de Software com qualidade

C++ Lua Java Go Ruby C#

Python Scala PHP Object-C

Page 5: Oo presentation básica

O que vem à sua mente quando surge o termo Orientação à

Objetos?

Classe, Objeto, Método público e privado, Comportamento, Pacote de Classes, Instância, Atributos, Herança, Coesão, Estado,

Interface, Acoplamento,

Constante.

Page 6: Oo presentation básica

O que é essa tal de Orientação a

Objetos?

É um “jeito” de escrever código?É um “jeito” de representar o problema do mundo real em código?É um design?É um modelo de programação?É tudo isso!

É um paradigma de programação!

Page 7: Oo presentation básica

Primeiros pensamentos..."O computador ideal deveria funcionar como um organismo vivo, isto é, cada célula relaciona com outras células a fim de alcançar um objetivo, mas cada uma funcionando de forma autônoma. As células poderiam também agrupar-se para resolver outros problemas"

Alan Key, Postulado.

Matematico, Biologo, Educador

Células = Objetos

Page 8: Oo presentation básica

Tudo no mundo real pode ser representado por um objeto?

Page 9: Oo presentation básica

Tudo no mundo real pode ser representado por um objeto!

Rota BR - USARota SP - BHRota RJ - NY

Page 10: Oo presentation básica

Tudo no mundo real pode ser representado por um objeto!

Page 11: Oo presentation básica

Primeiros pensamentos...

Objetos são como uma pessoa ao interagir com uma máquina de lavar roupa. Você interage com a máquina em "alto nível de abstração". Você coloca as roupas sujas, aperta um botão, e ela faz todo o serviço. Ao final ela nos dá roupas limpas.

Page 12: Oo presentation básica

Objeto é um "espelho"de uma classe e é caracterizada por:❏ Atributos

❏ Comportamento

❏ Estado

❏ Relacionamento

Page 13: Oo presentation básica

Classe/Objeto caracterizada por:❏ Atributos

❏ Comportamento

❏ Estado

❏ Relacionamento

Page 14: Oo presentation básica

Classe/Objeto caracterizada por:❏ Atributos

❏ Comportamento

❏ Estado

❏ Relacionamento

Page 15: Oo presentation básica

Composição Objeto pode conter outro(s) objeto(s)!

Page 16: Oo presentation básica

Composição

tem uma

Page 17: Oo presentation básica

ClassesConstructor:Inicia o objeto com suas características.

Variáveis/atributos/dependências:Tipo String, List, Stack, ArrayList, int, Integer, float, Objeto criado, Hash table.

Métodos/Função:Incluir loops, condicionais, tratamentos de exceção e qualquer manipulação de dados.

Page 18: Oo presentation básica

Vamos aoCódigo juntas!!

VISTOPacotes, Classes, Objetos, Métodos, Atributos, Interface.

Page 19: Oo presentation básica

Encapsulamento

Encapsulamento

PublicPrivate

Protected

Você não precisa entender todas os mecanismos do carro para dirigí-lo.

Como funciona a combustão?

Dirigir é muito simples!

Page 20: Oo presentation básica

Interface

Interface é o contrato que a Classe deve cumprir!!!

Page 21: Oo presentation básica

Interface

Page 22: Oo presentation básica

Pacotes

Classes e Pacotes.

Page 23: Oo presentation básica

Vamos aoCódigo juntas!!

CARROPacotes, Classes, Objetos, Métodos, Atributos, Encapsulamento, Interface.

Page 24: Oo presentation básica
Page 25: Oo presentation básica

Abstração! Abstração!

It's a important thing!

Page 26: Oo presentation básica

Abstrai!

"Abstrato tudo que não é concreto. É o que só existe na ideia, no conceito."

Page 27: Oo presentation básica

Abstrai!

"Abstrato tudo que não é concreto. É o que só existe na ideia, no conceito."

Pensar em classes de assuntos concretos é bem fácil. Mas e quando se trata de assuntos abstratos?

Page 28: Oo presentation básica

Abstrai!GATO, RENA, CORVO

CANADA, IRLANDA, ITALIA, SUÉCIA

ROTA CURTA, ROTA MEDIANA, ROTA LARGA

TRIANGULO, QUADRADO, CIRCULO

PORTUGUÊS, RUSSO, ESPANHOL, JAPONÊS

IPVA, IPTU, IRRF

Page 29: Oo presentation básica

Abstrai!GATO, RENA, CORVO = Animal

CANADA, IRLANDA, ITALIA, SUÉCIA = País

ROTA CURTA, ROTA MEDIANA, ROTA LARGA = Rota

TRIANGULO, QUADRADO, CIRCULO = Forma Geométrica

PORTUGUÊS, RUSSO, ESPANHOL, JAPONÊS= Idioma

IPVA, IPTU, IRRF= Imposto

Page 30: Oo presentation básica

Abstração de Software

"Abstração é a habilidade de concentrar nos aspectos essenciais de um contexto qualquer, ignorando características menos importantes. Em modelagem

orientada a objetos, uma classe é uma abstração de entidades existentes no domínio do sistema de software."

Wikipédia

Page 31: Oo presentation básica

Abstração de SoftwarePessoa em contexto de Universidade:Nome, endereço, curso, ensino básico, ensino médio, bolsista, ….

Pessoa em contexto de um Hospital:Nome, endereço, Tipo sanguíneo, Plano de saúde, Fumante, Diabético, ….

Pessoa em contexto de uma Loja de Roupas e Calçados:Nome, endereço, altura, peso, tamanho de calça, número do calçado, estilo, ….

Page 32: Oo presentation básica

Abordagem Procedural vs Orientacão à

Objetos

Muitos desenvolvedores dizem programar em OO mas ainda estão fazendo programacão procedural.

Page 33: Oo presentation básica

Procedural vs Orientacão à ObjetosProblema matemático

"Em códigos procedurais, a implementação é o que importa."

Produto do Departamento de Vendas

"Em códigos OO, a implementação também é fundamental, mas pensar no projeto de classes, em como elas se encaixam e como elas serão estendidas é o que importa."

Page 34: Oo presentation básica

QUEBRA-CABEÇA

Page 35: Oo presentation básica

HerançaUm objeto pode herdar características/ comportamentos de outro objeto.

Page 36: Oo presentation básica

Herança

Tipo de/Herda

Funcionário

Gerente

- Data de Admissão;- Recuperar Bonus;- Receber Docs;- Analisar Docs;- Aprovar Docs;

- Data Fim do Cargo;- Negociar Vendas.

"Preso a classe Mãe!"

Page 37: Oo presentation básica

PolimorfismoPolimorfismo é a capacidade de um objeto poder ser referenciado de várias formas.

Page 38: Oo presentation básica

Polimorfismo

Herda

Tipo de Funcionário

Gerente

- Data de Admissão;- Recuperar Bonus;- Receber Docs;- Analisar Docs;- Aprovar Docs;

- Data Fim do Cargo;- Recuperar Bonus;- Negociar Vendas.

Page 39: Oo presentation básica

Polimorfismo

Mas e se chamar o método de Recuperar a Bonificação?

Page 40: Oo presentation básica

Polimorfismo

Chamar getBonificação( ) do Gerente.

Page 41: Oo presentation básica

PolimorfismoOverride:Sobrescrita do método. Ocorre quando uma classe herda de outra classe.

Overload:Sobrecarga do método.Ocorre dentro de uma mesma classe.

Page 42: Oo presentation básica

Polimorfismo 1

Gerente herda o método recuperar Bonus? $$$$$$

Funcionários

Gerente

"override"

- Negociar Vendas.

- Recuperar Bonus;- Receber Docs.- Analisar Docs.- Aprovar Docs.

Page 43: Oo presentation básica

Polimorfismo 2

Receber Docs Disponíveis Receber Docs por quantidadeReceber Docs por intervalo de Data

Funcionários"overload"

- Recuperar Bonus;- Receber Docs.- Analisar Docs.- Aprovar Docs.

Page 44: Oo presentation básica

Vamos aoCódigo juntas!!

FuncionárioPacotes, Classes, Objetos, Métodos, Atributos, Encapsulamento, Interface.

Page 45: Oo presentation básica

"A natureza modular dos objetos permite que você faça alterações em uma parte de

seu programa, sem afetar outras partes." Confiável

"Uma vez que um determinado problema foi resolvido, a solução deverá ser

reutilizada." Reutilizável

"Corrige o problema em um lugar e todas as outras partes envolvidas serão

beneficiadas." Manutenível

Page 46: Oo presentation básica

"A implementação de várias classes pode ocorrer em paralelo e de forma

independente." Oportuno

"A implementação está sempre aberta à evolução." Extensível

"Para implementar um software, basta saber o que ele deve fazer." Natural

Page 47: Oo presentation básica

ConclusãoDemos só o primeiro passo da nossa jornada em OO!

Praticar esses conceitos é imprescindível!