SlideShare ist ein Scribd-Unternehmen logo
1 von 41
Orientação a Objetos na
prática
Paulo Moura
O mundo é procedural
O mundo também é
orientado a objetos
Objetos
Interações
gera
Comportamentos
Mas OO é sobre modelar
o mundo real?
Servlet API
Servlet API
Criar um design OO é parar de pensar o
mundo como um conjunto de procedimentos
e começar a vê-lo como uma série de troca
de mensagens entre objetos
Design
Design
Design
fácil de mudar
Design
fácil de mudar
prazer de escrever
Design
fácil de mudar
prazer de escrever
flexível, adaptável
Design
fácil de mudar
prazer de escrever
flexível, adaptável
componetizável (composable)
Dependências
Dependências
adas a objetos são feitas de partes que interagem para produzir comp
Programe orientado a interface, não à
implementação
public class FuncionarioDao {
public void gravaEmLote(ArrayList<Funcionario> funcionarios) { ... }
}
public class FuncionarioDao {
public void gravaEmLote(Collection<Funcionario> funcionarios) { ... }
}
public class FuncionarioDao {
public void gravaEmLote(Collection<Funcionario> funcionarios) { ... }
}
Tell, don’t ask
def street_name(user)
if user.address
user.address.street_name
else
'No street name on file'
end
end
def street_name(user)
user.address.street_name
end
class User
def address
@address || NullAddress.new
end
end
class NullAddress
def street_name
'No street name on file'
end
end
def street_name(user)
user.address.street_name
end
class User
def address
@address || NullAddress.new
end
end
class NullAddress
def street_name
'No street name on file'
end
end
def street_name(user)
user.address.street_name
end
class User
def address
@address || NullAddress.new
end
end
class NullAddress
def street_name
'No street name on file'
end
end
Seus módulos devem ser abertos para a
extensão e fechados para modificação
Princípio da Substituição de Liskov
Princípio da Segregação de interfaces
lientes não devem ser forçados a depender de interfaces que não usam
Princípio da inversão de dependência
Obrigado!
Paulo moura
@paulociecomp

Weitere ähnliche Inhalte

Ähnlich wie Orientação a Objetos na prática

Apresentação Introdução Design Patterns
Apresentação Introdução Design PatternsApresentação Introdução Design Patterns
Apresentação Introdução Design PatternsLucas Simões Maistro
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
Transição - Orientação a objeto para Funcional
Transição - Orientação a objeto para FuncionalTransição - Orientação a objeto para Funcional
Transição - Orientação a objeto para FuncionalIsmael Velten
 
Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02Jhonefj
 
Introdução a DevOps e Continuous delivery agileday
Introdução a DevOps e Continuous delivery   agiledayIntrodução a DevOps e Continuous delivery   agileday
Introdução a DevOps e Continuous delivery agiledayCarlos Felippe Cardoso
 
Framework Entities - Apresentação da Defesa da Dissertacao
Framework Entities - Apresentação da Defesa da DissertacaoFramework Entities - Apresentação da Defesa da Dissertacao
Framework Entities - Apresentação da Defesa da DissertacaoMarcius Brandão
 
(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012Luís Cobucci
 
Desenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma AndroidDesenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma AndroidJosé Alexandre Macedo
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemassauloroos01
 
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorPorque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorDickson S. Guedes
 
Flávio Almeida MEAN Stack "to be or not to be mean"
Flávio Almeida MEAN Stack "to be or not to be mean"Flávio Almeida MEAN Stack "to be or not to be mean"
Flávio Almeida MEAN Stack "to be or not to be mean"flaviohalmeida
 
Workshop - Design de Interfaces para Dispositivos Móveis
Workshop - Design de Interfaces para Dispositivos MóveisWorkshop - Design de Interfaces para Dispositivos Móveis
Workshop - Design de Interfaces para Dispositivos MóveisDaniel Lugondi
 
Raphael Moraes - Arquitetura de componentes
Raphael Moraes - Arquitetura de componentesRaphael Moraes - Arquitetura de componentes
Raphael Moraes - Arquitetura de componentesRaphael Moraes
 
Raphael Moraes - Large-Scale Javascript Arquitetura de componentes genéricos...
Raphael Moraes - Large-Scale Javascript Arquitetura de componentes genéricos...Raphael Moraes - Large-Scale Javascript Arquitetura de componentes genéricos...
Raphael Moraes - Large-Scale Javascript Arquitetura de componentes genéricos...DevCamp Campinas
 

Ähnlich wie Orientação a Objetos na prática (20)

Apresentação Introdução Design Patterns
Apresentação Introdução Design PatternsApresentação Introdução Design Patterns
Apresentação Introdução Design Patterns
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
 
Transição - Orientação a objeto para Funcional
Transição - Orientação a objeto para FuncionalTransição - Orientação a objeto para Funcional
Transição - Orientação a objeto para Funcional
 
Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02
 
Introdução a DevOps e Continuous delivery agileday
Introdução a DevOps e Continuous delivery   agiledayIntrodução a DevOps e Continuous delivery   agileday
Introdução a DevOps e Continuous delivery agileday
 
Framework Entities - Apresentação da Defesa da Dissertacao
Framework Entities - Apresentação da Defesa da DissertacaoFramework Entities - Apresentação da Defesa da Dissertacao
Framework Entities - Apresentação da Defesa da Dissertacao
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012
 
Desenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma AndroidDesenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma Android
 
Introdução ao LINQ
Introdução ao LINQIntrodução ao LINQ
Introdução ao LINQ
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemas
 
Aula 01 introdução aoo
Aula 01   introdução aooAula 01   introdução aoo
Aula 01 introdução aoo
 
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorPorque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
 
Flávio Almeida MEAN Stack "to be or not to be mean"
Flávio Almeida MEAN Stack "to be or not to be mean"Flávio Almeida MEAN Stack "to be or not to be mean"
Flávio Almeida MEAN Stack "to be or not to be mean"
 
aula 1.pptx
aula 1.pptxaula 1.pptx
aula 1.pptx
 
Workshop - Design de Interfaces para Dispositivos Móveis
Workshop - Design de Interfaces para Dispositivos MóveisWorkshop - Design de Interfaces para Dispositivos Móveis
Workshop - Design de Interfaces para Dispositivos Móveis
 
Raphael Moraes - Arquitetura de componentes
Raphael Moraes - Arquitetura de componentesRaphael Moraes - Arquitetura de componentes
Raphael Moraes - Arquitetura de componentes
 
Raphael Moraes - Large-Scale Javascript Arquitetura de componentes genéricos...
Raphael Moraes - Large-Scale Javascript Arquitetura de componentes genéricos...Raphael Moraes - Large-Scale Javascript Arquitetura de componentes genéricos...
Raphael Moraes - Large-Scale Javascript Arquitetura de componentes genéricos...
 

Mehr von Paulo Moura

Segurança em aplicações web
Segurança em aplicações webSegurança em aplicações web
Segurança em aplicações webPaulo Moura
 
Desktop, Web e Mobile
Desktop, Web e MobileDesktop, Web e Mobile
Desktop, Web e MobilePaulo Moura
 
Praticas Ágeis para desenvolvimento de Software
Praticas Ágeis para desenvolvimento de SoftwarePraticas Ágeis para desenvolvimento de Software
Praticas Ágeis para desenvolvimento de SoftwarePaulo Moura
 
Safo rico safo pobre
Safo rico safo pobreSafo rico safo pobre
Safo rico safo pobrePaulo Moura
 
Qualidade de Software - Uma visão de desenvolvedor
Qualidade de Software - Uma visão de desenvolvedorQualidade de Software - Uma visão de desenvolvedor
Qualidade de Software - Uma visão de desenvolvedorPaulo Moura
 

Mehr von Paulo Moura (6)

Segurança em aplicações web
Segurança em aplicações webSegurança em aplicações web
Segurança em aplicações web
 
Desktop, Web e Mobile
Desktop, Web e MobileDesktop, Web e Mobile
Desktop, Web e Mobile
 
Xp
XpXp
Xp
 
Praticas Ágeis para desenvolvimento de Software
Praticas Ágeis para desenvolvimento de SoftwarePraticas Ágeis para desenvolvimento de Software
Praticas Ágeis para desenvolvimento de Software
 
Safo rico safo pobre
Safo rico safo pobreSafo rico safo pobre
Safo rico safo pobre
 
Qualidade de Software - Uma visão de desenvolvedor
Qualidade de Software - Uma visão de desenvolvedorQualidade de Software - Uma visão de desenvolvedor
Qualidade de Software - Uma visão de desenvolvedor
 

Kürzlich hochgeladen

Livro Vibrações Mecânicas - Rao Singiresu - 4ª Ed.pdf
Livro Vibrações Mecânicas - Rao Singiresu - 4ª Ed.pdfLivro Vibrações Mecânicas - Rao Singiresu - 4ª Ed.pdf
Livro Vibrações Mecânicas - Rao Singiresu - 4ª Ed.pdfSamuel Ramos
 
DESTRAVANDO O NOVO EDITAL DA CAIXA ECONOMICA
DESTRAVANDO O NOVO EDITAL DA CAIXA ECONOMICADESTRAVANDO O NOVO EDITAL DA CAIXA ECONOMICA
DESTRAVANDO O NOVO EDITAL DA CAIXA ECONOMICAPabloVinicius40
 
Tecnólogo em Mecatrônica - Universidade Anhanguera
Tecnólogo em Mecatrônica - Universidade AnhangueraTecnólogo em Mecatrônica - Universidade Anhanguera
Tecnólogo em Mecatrônica - Universidade AnhangueraGuilhermeLucio9
 
A Importância dos EPI's no trabalho e no dia a dia laboral
A Importância dos EPI's no trabalho e no dia a dia laboralA Importância dos EPI's no trabalho e no dia a dia laboral
A Importância dos EPI's no trabalho e no dia a dia laboralFranciscaArrudadaSil
 
Eletricista instalador - Senai Almirante Tamandaré
Eletricista instalador - Senai Almirante TamandaréEletricista instalador - Senai Almirante Tamandaré
Eletricista instalador - Senai Almirante TamandaréGuilhermeLucio9
 
Treinamento de NR06 Equipamento de Proteção Individual
Treinamento de NR06 Equipamento de Proteção IndividualTreinamento de NR06 Equipamento de Proteção Individual
Treinamento de NR06 Equipamento de Proteção Individualpablocastilho3
 
LEAN SIX SIGMA - Garantia da qualidade e segurança
LEAN SIX SIGMA - Garantia da qualidade e segurançaLEAN SIX SIGMA - Garantia da qualidade e segurança
LEAN SIX SIGMA - Garantia da qualidade e segurançaGuilhermeLucio9
 

Kürzlich hochgeladen (7)

Livro Vibrações Mecânicas - Rao Singiresu - 4ª Ed.pdf
Livro Vibrações Mecânicas - Rao Singiresu - 4ª Ed.pdfLivro Vibrações Mecânicas - Rao Singiresu - 4ª Ed.pdf
Livro Vibrações Mecânicas - Rao Singiresu - 4ª Ed.pdf
 
DESTRAVANDO O NOVO EDITAL DA CAIXA ECONOMICA
DESTRAVANDO O NOVO EDITAL DA CAIXA ECONOMICADESTRAVANDO O NOVO EDITAL DA CAIXA ECONOMICA
DESTRAVANDO O NOVO EDITAL DA CAIXA ECONOMICA
 
Tecnólogo em Mecatrônica - Universidade Anhanguera
Tecnólogo em Mecatrônica - Universidade AnhangueraTecnólogo em Mecatrônica - Universidade Anhanguera
Tecnólogo em Mecatrônica - Universidade Anhanguera
 
A Importância dos EPI's no trabalho e no dia a dia laboral
A Importância dos EPI's no trabalho e no dia a dia laboralA Importância dos EPI's no trabalho e no dia a dia laboral
A Importância dos EPI's no trabalho e no dia a dia laboral
 
Eletricista instalador - Senai Almirante Tamandaré
Eletricista instalador - Senai Almirante TamandaréEletricista instalador - Senai Almirante Tamandaré
Eletricista instalador - Senai Almirante Tamandaré
 
Treinamento de NR06 Equipamento de Proteção Individual
Treinamento de NR06 Equipamento de Proteção IndividualTreinamento de NR06 Equipamento de Proteção Individual
Treinamento de NR06 Equipamento de Proteção Individual
 
LEAN SIX SIGMA - Garantia da qualidade e segurança
LEAN SIX SIGMA - Garantia da qualidade e segurançaLEAN SIX SIGMA - Garantia da qualidade e segurança
LEAN SIX SIGMA - Garantia da qualidade e segurança
 

Orientação a Objetos na prática