SlideShare uma empresa Scribd logo
1 de 48
Baixar para ler offline
Orientação à Objetos primeiros
passos
By Lorena
lcsouza@thoughtworks.com
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.
Como podemos tornar desenvolvedoras mais
consciente?
Porque é IMPORTANTE conhecer mais sobre
Design Orientado à
Objetos?
Design de
Software
bem feito
com OO
Testes mais eficazes
e maior cobertura
Manutenções
mais fáceis e
rápidas
Entregas
rápidas de
Software
com
qualidade
C++ Lua Java Go Ruby C#
PythonScala PHP Object-C
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.
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!
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
Tudo no mundo real
pode ser representado
por um objeto?
Tudo no mundo real pode ser
representado por um objeto!
Rota BR - USA
Rota SP - BH
Rota RJ - NY
Tudo no mundo real pode
ser representado por um
objeto!
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.
Objeto é um "espelho"de uma classe e é caracterizada por:
❏ Atributos
❏ Comportamento
❏ Estado
❏ Relacionamento
Classe/Objeto caracterizada por:
❏ Atributos
❏ Comportamento
❏ Estado
❏ Relacionamento
Classe/Objeto caracterizada por:
❏ Atributos
❏ Comportamento
❏ Estado
❏ Relacionamento
Composição
Objeto pode conter
outro(s) objeto(s)!
Composição
tem uma
Classes
Constructor:
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.
Vamos ao
Código juntas!!
VISTO
Pacotes, Classes, Objetos, Métodos, Atributos, Interface.
Encapsulamento
Encapsulamento
Public
Private
Protected
Você não precisa entender todas os
mecanismos do carro para dirigí-lo.
Como funciona a combustão?
Dirigir é muito simples!
Interface
Interface é o contrato que a Classe deve cumprir!!!
Interface
Pacotes
Classes e Pacotes.
Vamos ao
Código juntas!!
CARRO
Pacotes, Classes, Objetos, Métodos, Atributos, Encapsulamento, Interface.
Abstração! Abstração!
It's a important thing!
Abstrai!
"Abstrato tudo que não é concreto. É o que só existe na ideia, no conceito."
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?
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
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
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
Abstração de Software
Pessoa 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, ….
Abordagem
Procedural vs
Orientacão à
Objetos
Muitos desenvolvedores
dizem programar em OO
mas ainda estão fazendo
programacão procedural.
Procedural vs Orientacão à Objetos
Problema 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."
QUEBRA-CABEÇA
Herança
Um objeto pode herdar
características/
comportamentos de outro
objeto.
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!"
Polimorfismo
Polimorfismo é a
capacidade de um objeto
poder ser referenciado de
várias formas.
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.
Polimorfismo
Mas e se chamar o método de
Recuperar a Bonificação?
Polimorfismo
Chamar getBonificação( ) do Gerente.
Polimorfismo
Override:
Sobrescrita do método.
Ocorre quando uma classe herda de outra classe.
Overload:
Sobrecarga do método.
Ocorre dentro de uma mesma classe.
Polimorfismo 1
Gerente herda o método
recuperar Bonus? $$$$$$
Funcionários
Gerente
"override"
- Negociar Vendas.
- Recuperar Bonus;
- Receber Docs.
- Analisar Docs.
- Aprovar Docs.
Polimorfismo 2
Receber Docs Disponíveis
Receber Docs por quantidade
Receber Docs por intervalo de Data
Funcionários
"overload"
- Recuperar Bonus;
- Receber Docs.
- Analisar Docs.
- Aprovar Docs.
Vamos ao
Código juntas!!
Funcionário
Pacotes, Classes, Objetos, Métodos, Atributos, Encapsulamento, Interface.
"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
"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
Conclusão
Demos só o primeiro passo da nossa jornada em OO!
Praticar esses conceitos é imprescindível!
Livros
Practical Object-Oriented Design in Ruby
An Agile Primer da Sandi Metz
Orientação a Objetos e SOLID para Ninjas:
Projetando classes flexíveis do Mauricio Aniche

Mais conteúdo relacionado

Mais procurados

Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosLeonardo Melo Santos
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a pooSedu
 
Java: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acessoJava: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acessoArthur Emanuel
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaDaniel Brandão
 
Aula 3 introducao a orientação a objetos
Aula 3   introducao a orientação a objetosAula 3   introducao a orientação a objetos
Aula 3 introducao a orientação a objetosRafael Pinheiro
 
Especialização e generalização em java
Especialização e generalização em javaEspecialização e generalização em java
Especialização e generalização em javaDiogo Winck
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1ariovaldodias
 
Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaCristiano Almeida
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetosdanielrpgj30
 
Orientação a Objetos - Conceitos
Orientação a Objetos - ConceitosOrientação a Objetos - Conceitos
Orientação a Objetos - ConceitosMayron Cachina
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e ExercíciosArthur Emanuel
 
Desenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a ObjectosDesenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a ObjectosVitor Silva
 
03 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.003 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.0César Augusto Pessôa
 

Mais procurados (20)

Aula 09 - introducao oo
Aula 09 - introducao ooAula 09 - introducao oo
Aula 09 - introducao oo
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetos
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a poo
 
Java: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acessoJava: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acesso
 
Poo (1)
Poo (1)Poo (1)
Poo (1)
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
Aula 3 introducao a orientação a objetos
Aula 3   introducao a orientação a objetosAula 3   introducao a orientação a objetos
Aula 3 introducao a orientação a objetos
 
Especialização e generalização em java
Especialização e generalização em javaEspecialização e generalização em java
Especialização e generalização em java
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1
 
Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em Java
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetos
 
Orientação a Objetos - Conceitos
Orientação a Objetos - ConceitosOrientação a Objetos - Conceitos
Orientação a Objetos - Conceitos
 
POO - Aula 1
POO - Aula 1POO - Aula 1
POO - Aula 1
 
Atividade 3
Atividade 3Atividade 3
Atividade 3
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e Exercícios
 
Desenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a ObjectosDesenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a Objectos
 
03 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.003 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.0
 

Destaque

El bullying y sus tipos
El bullying y sus tiposEl bullying y sus tipos
El bullying y sus tiposmivena
 
Jesus, tu és o meu melhor amigo
Jesus, tu és o meu melhor amigoJesus, tu és o meu melhor amigo
Jesus, tu és o meu melhor amigorafael gomide
 
Mike Featherstone - O Flâneur, a cidade e a vida pública virtual
Mike Featherstone - O Flâneur, a cidade e a vida pública virtualMike Featherstone - O Flâneur, a cidade e a vida pública virtual
Mike Featherstone - O Flâneur, a cidade e a vida pública virtualBruna Marques
 
Uma nova chama de amor
Uma nova chama de amorUma nova chama de amor
Uma nova chama de amorrafael gomide
 
Em nome do senhor jesus quero me entregar pra sempre ao meu
Em nome do senhor jesus quero me entregar pra sempre ao meu Em nome do senhor jesus quero me entregar pra sempre ao meu
Em nome do senhor jesus quero me entregar pra sempre ao meu rafael gomide
 
Daniel robledillo
Daniel robledilloDaniel robledillo
Daniel robledilloalexis_0210
 

Destaque (20)

El bullying y sus tipos
El bullying y sus tiposEl bullying y sus tipos
El bullying y sus tipos
 
Salmos e hinos 267
Salmos e hinos 267Salmos e hinos 267
Salmos e hinos 267
 
Salmos e hinos 079
Salmos e hinos 079Salmos e hinos 079
Salmos e hinos 079
 
Salmos e hinos 222
Salmos e hinos 222Salmos e hinos 222
Salmos e hinos 222
 
Salmos e hinos 129
Salmos e hinos 129Salmos e hinos 129
Salmos e hinos 129
 
Salmos e hinos 231
Salmos e hinos 231Salmos e hinos 231
Salmos e hinos 231
 
Salmos e hinos 299
Salmos e hinos 299Salmos e hinos 299
Salmos e hinos 299
 
Jesus, tu és o meu melhor amigo
Jesus, tu és o meu melhor amigoJesus, tu és o meu melhor amigo
Jesus, tu és o meu melhor amigo
 
Katya vanegas
Katya vanegasKatya vanegas
Katya vanegas
 
Milagre
MilagreMilagre
Milagre
 
Salmos e hinos 128
Salmos e hinos 128Salmos e hinos 128
Salmos e hinos 128
 
Eu vou (áfrica)
Eu vou (áfrica)Eu vou (áfrica)
Eu vou (áfrica)
 
Mike Featherstone - O Flâneur, a cidade e a vida pública virtual
Mike Featherstone - O Flâneur, a cidade e a vida pública virtualMike Featherstone - O Flâneur, a cidade e a vida pública virtual
Mike Featherstone - O Flâneur, a cidade e a vida pública virtual
 
Uma nova chama de amor
Uma nova chama de amorUma nova chama de amor
Uma nova chama de amor
 
Em nome do senhor jesus quero me entregar pra sempre ao meu
Em nome do senhor jesus quero me entregar pra sempre ao meu Em nome do senhor jesus quero me entregar pra sempre ao meu
Em nome do senhor jesus quero me entregar pra sempre ao meu
 
Fervente oração
Fervente oraçãoFervente oração
Fervente oração
 
Daniel robledillo
Daniel robledilloDaniel robledillo
Daniel robledillo
 
Flash
FlashFlash
Flash
 
Salmos e hinos 482
Salmos e hinos 482Salmos e hinos 482
Salmos e hinos 482
 
Salmos e hinos 057
Salmos e hinos 057Salmos e hinos 057
Salmos e hinos 057
 

Semelhante a Oo presentation básica

3.1 orientação objetos
3.1  orientação objetos3.1  orientação objetos
3.1 orientação objetosFrank Coelho
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemassauloroos01
 
2.1 introdução a oo
2.1 introdução a oo2.1 introdução a oo
2.1 introdução a ooPAULO Moreira
 
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdfAPOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdfpedrina4
 
3 oo-concepts
3 oo-concepts3 oo-concepts
3 oo-conceptsjorge600
 
Análise Orientada a Objetos - Objetos E Classes
Análise Orientada a Objetos  -   Objetos E ClassesAnálise Orientada a Objetos  -   Objetos E Classes
Análise Orientada a Objetos - Objetos E ClassesCursoSENAC
 
Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012Frederico Maia Arantes
 
Paradigmas de Programação
Paradigmas de ProgramaçãoParadigmas de Programação
Paradigmas de ProgramaçãoNatanael Simões
 
paradigmas de programação
paradigmas de programaçãoparadigmas de programação
paradigmas de programaçãoD1ogo
 
Curso C# em Mono - Orientação a Objeto Basico
Curso C# em Mono - Orientação a Objeto BasicoCurso C# em Mono - Orientação a Objeto Basico
Curso C# em Mono - Orientação a Objeto BasicoAlessandro Binhara
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programaçãoMahayana2706
 
IES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a ObjetosIES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a ObjetosRamon Mayor Martins
 
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ..."Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...Cesar Augusto Nogueira
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem IIIJuliano Weber
 

Semelhante a Oo presentation básica (20)

Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
 
3 oo-concepts
3 oo-concepts3 oo-concepts
3 oo-concepts
 
3.1 orientação objetos
3.1  orientação objetos3.1  orientação objetos
3.1 orientação objetos
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemas
 
2.1 introdução a oo
2.1 introdução a oo2.1 introdução a oo
2.1 introdução a oo
 
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdfAPOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
 
Java aula 2
Java aula 2Java aula 2
Java aula 2
 
POO - Aula 003
POO - Aula 003POO - Aula 003
POO - Aula 003
 
3 oo-concepts
3 oo-concepts3 oo-concepts
3 oo-concepts
 
Análise Orientada a Objetos - Objetos E Classes
Análise Orientada a Objetos  -   Objetos E ClassesAnálise Orientada a Objetos  -   Objetos E Classes
Análise Orientada a Objetos - Objetos E Classes
 
Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012
 
Orientação a Objetos (1)
Orientação a Objetos (1)Orientação a Objetos (1)
Orientação a Objetos (1)
 
Orientação a Objetos (introdução)
Orientação a Objetos (introdução)Orientação a Objetos (introdução)
Orientação a Objetos (introdução)
 
Paradigmas de Programação
Paradigmas de ProgramaçãoParadigmas de Programação
Paradigmas de Programação
 
paradigmas de programação
paradigmas de programaçãoparadigmas de programação
paradigmas de programação
 
Curso C# em Mono - Orientação a Objeto Basico
Curso C# em Mono - Orientação a Objeto BasicoCurso C# em Mono - Orientação a Objeto Basico
Curso C# em Mono - Orientação a Objeto Basico
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
IES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a ObjetosIES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a Objetos
 
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ..."Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
"Se tornando um Desenvolvedor Java NINJA" - Semana Integrada da PUC Campinas ...
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem III
 

Oo presentation básica

  • 1. Orientação à Objetos primeiros passos By Lorena lcsouza@thoughtworks.com
  • 2. 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.
  • 3. Como podemos tornar desenvolvedoras mais consciente? Porque é IMPORTANTE conhecer mais sobre Design Orientado à Objetos?
  • 4. Design de Software bem feito com OO Testes mais eficazes e maior cobertura Manutenções mais fáceis e rápidas Entregas rápidas de Software com qualidade C++ Lua Java Go Ruby C# PythonScala PHP Object-C
  • 5. 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.
  • 6. 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!
  • 7. 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
  • 8. Tudo no mundo real pode ser representado por um objeto?
  • 9. Tudo no mundo real pode ser representado por um objeto! Rota BR - USA Rota SP - BH Rota RJ - NY
  • 10. Tudo no mundo real pode ser representado por um objeto!
  • 11. 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.
  • 12. Objeto é um "espelho"de uma classe e é caracterizada por: ❏ Atributos ❏ Comportamento ❏ Estado ❏ Relacionamento
  • 13. Classe/Objeto caracterizada por: ❏ Atributos ❏ Comportamento ❏ Estado ❏ Relacionamento
  • 14. Classe/Objeto caracterizada por: ❏ Atributos ❏ Comportamento ❏ Estado ❏ Relacionamento
  • 17. Classes Constructor: 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.
  • 18. Vamos ao Código juntas!! VISTO Pacotes, Classes, Objetos, Métodos, Atributos, Interface.
  • 19. Encapsulamento Encapsulamento Public Private Protected Você não precisa entender todas os mecanismos do carro para dirigí-lo. Como funciona a combustão? Dirigir é muito simples!
  • 20. Interface Interface é o contrato que a Classe deve cumprir!!!
  • 23. Vamos ao Código juntas!! CARRO Pacotes, Classes, Objetos, Métodos, Atributos, Encapsulamento, Interface.
  • 24.
  • 26. Abstrai! "Abstrato tudo que não é concreto. É o que só existe na ideia, no conceito."
  • 27. 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?
  • 28. 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
  • 29. 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
  • 30. 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
  • 31. Abstração de Software Pessoa 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, ….
  • 32. Abordagem Procedural vs Orientacão à Objetos Muitos desenvolvedores dizem programar em OO mas ainda estão fazendo programacão procedural.
  • 33. Procedural vs Orientacão à Objetos Problema 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."
  • 35. Herança Um objeto pode herdar características/ comportamentos de outro objeto.
  • 36. 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!"
  • 37. Polimorfismo Polimorfismo é a capacidade de um objeto poder ser referenciado de várias formas.
  • 38. 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.
  • 39. Polimorfismo Mas e se chamar o método de Recuperar a Bonificação?
  • 41. Polimorfismo Override: Sobrescrita do método. Ocorre quando uma classe herda de outra classe. Overload: Sobrecarga do método. Ocorre dentro de uma mesma classe.
  • 42. Polimorfismo 1 Gerente herda o método recuperar Bonus? $$$$$$ Funcionários Gerente "override" - Negociar Vendas. - Recuperar Bonus; - Receber Docs. - Analisar Docs. - Aprovar Docs.
  • 43. Polimorfismo 2 Receber Docs Disponíveis Receber Docs por quantidade Receber Docs por intervalo de Data Funcionários "overload" - Recuperar Bonus; - Receber Docs. - Analisar Docs. - Aprovar Docs.
  • 44. Vamos ao Código juntas!! Funcionário Pacotes, Classes, Objetos, Métodos, Atributos, Encapsulamento, Interface.
  • 45. "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
  • 46. "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
  • 47. Conclusão Demos só o primeiro passo da nossa jornada em OO! Praticar esses conceitos é imprescindível!
  • 48. Livros Practical Object-Oriented Design in Ruby An Agile Primer da Sandi Metz Orientação a Objetos e SOLID para Ninjas: Projetando classes flexíveis do Mauricio Aniche