SlideShare una empresa de Scribd logo
1 de 64
Descargar para leer sin conexión
Object
      Oriented

Javascript
     Emerson Macedo
         @emerleite
    http://nodecasts.org
   http://codificando.com
#whoami
#javascript
Todo programador que
   trabalha com web
deve aprender Javascript
Todo programador que
   trabalha com web
deve aprender Javascript

#corretamente
#caracteristicas
Javascript é
Orientado a Objetos
“Eu inventei o
termo Orientação
a Objetos e posso
 dizer que eu não
  tinha C++ em
      mente”
  Alan Kay
Definindo
Orientação a Objetos
Classe
 Herança
Sobrescrita
Sobrecarga
  public
protected
 private
Classe
 Herança
Sobrescrita
Sobrecarga
  public
protected
 private
Modelar o
mundo real
Modelar o
mundo real
Orientação a Objetos
serve para lidar com
   complexidade
#propriedades
#comofaz
Usando classes - Ex: Java
Usando classes - Ex: Java
Classe é uma
definição de estrutura
   com estado e
  comportamento
Javascript Functions

• São a principal abstração da linguagem
• Podem retornar ou não alguma coisa
• Javascript não tem classes
• JS é mais O.O do que muitos pensam
Javascript Functions - Sintaxe
Contruindo Objetos

• Podem ser construidos com new
• Podem ser construidos usando { }
• Podem ser construidos com funções
Contruindo Objetos - new
Contruindo Objetos - { }
Contruindo Objetos - funções
#prototype
Contruindo Objetos - herança
#closures
Closure é uma
definição de um
comportamento
  com estado
Closures
Closures - private
Closures - Mixins
Closures - Mixins
Usando classes - Ex: Java
Usando closures - Ex: Javascript
Mixins fazem composição
  de comportamento
  melhor que herança
#conclusão
Javascript nunca foi
 uma linguagem de
     brinquedo
Classe é apenas uma
forma de construir
      objetos
Closures são mais
poderosos que classes
Javascript é “mais”
Orientado a Objetos
do que você imagina
Obrigado !!!
    Emerson Macedo
        @emerleite
   http://nodecasts.org
  http://codificando.com
Referências
http://en.wikipedia.org/wiki/JavaScript
http://en.wikipedia.org/wiki/Smalltalk
http://en.wikipedia.org/wiki/Object-oriented_programming
[Page-Jones, 2000] - http://goo.gl/W9y4l
http://en.wikipedia.org/wiki/Prototype-based_programming
http://en.wikipedia.org/wiki/Delegation_(programming)
http://en.wikipedia.org/wiki/Closure_(computer_science)
http://okmij.org/ftp/Scheme/oop-in-fp.txt
http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/
msg03277.html
http://fragmental.tw/2008/09/23/object-oriented-design-which-
how-and-what/

Más contenido relacionado

La actualidad más candente

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
Vitor Silva
 
Javascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - ConceitosJavascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - Conceitos
Wesley Lemos
 

La actualidad más candente (20)

Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScript
 
Desenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitDesenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo Toolkit
 
jQuery básico (parte 1)
jQuery básico (parte 1)jQuery básico (parte 1)
jQuery básico (parte 1)
 
Javascript para adultos
Javascript para adultosJavascript para adultos
Javascript para adultos
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on Rails
 
JavaScript: Introdução e Operadores (aula 1)
JavaScript: Introdução e Operadores (aula 1)JavaScript: Introdução e Operadores (aula 1)
JavaScript: Introdução e Operadores (aula 1)
 
Introdução JavaScript e DOM 2016
Introdução JavaScript e DOM 2016Introdução JavaScript e DOM 2016
Introdução JavaScript e DOM 2016
 
Javascript + jQuery
Javascript + jQueryJavascript + jQuery
Javascript + jQuery
 
Java script1
Java script1Java script1
Java script1
 
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
 
Aula 07 acessibilidade
Aula 07  acessibilidadeAula 07  acessibilidade
Aula 07 acessibilidade
 
Mapa de aprendizado Front End
Mapa de aprendizado Front EndMapa de aprendizado Front End
Mapa de aprendizado Front End
 
Melhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQueryMelhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQuery
 
Javascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - ConceitosJavascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - Conceitos
 
Aula06 - JavaScript
Aula06 - JavaScriptAula06 - JavaScript
Aula06 - JavaScript
 
Introdução às Bibliotecas jQuery/ jQuery UI
Introdução às Bibliotecas jQuery/ jQuery UIIntrodução às Bibliotecas jQuery/ jQuery UI
Introdução às Bibliotecas jQuery/ jQuery UI
 
JavaScript Firme: Módulos com RequireJS e BDD com Jasmine
JavaScript Firme: Módulos com RequireJS e BDD com JasmineJavaScript Firme: Módulos com RequireJS e BDD com Jasmine
JavaScript Firme: Módulos com RequireJS e BDD com Jasmine
 
Boas práticas de API Design
Boas práticas de API DesignBoas práticas de API Design
Boas práticas de API Design
 
Introdução a HTML, CSS, JS, Ajax
Introdução a HTML, CSS, JS, AjaxIntrodução a HTML, CSS, JS, Ajax
Introdução a HTML, CSS, JS, Ajax
 
JavaScript: uma visão geral da linguagem e seu ecossistema
JavaScript: uma visão geral da linguagem e seu ecossistemaJavaScript: uma visão geral da linguagem e seu ecossistema
JavaScript: uma visão geral da linguagem e seu ecossistema
 

Destacado

Destacado (20)

Javascript levado a sério
Javascript levado a sérioJavascript levado a sério
Javascript levado a sério
 
How to create high scalable JavaScript apps for Java Portals
How to create high scalable JavaScript apps for Java PortalsHow to create high scalable JavaScript apps for Java Portals
How to create high scalable JavaScript apps for Java Portals
 
WTF Javascript - FrontInRio 2011
WTF Javascript - FrontInRio 2011WTF Javascript - FrontInRio 2011
WTF Javascript - FrontInRio 2011
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)
 
HTML 5
HTML 5HTML 5
HTML 5
 
#2 - Git - DAG
#2 - Git - DAG#2 - Git - DAG
#2 - Git - DAG
 
Desbravando o HTML5 Boilerplate
Desbravando o HTML5 BoilerplateDesbravando o HTML5 Boilerplate
Desbravando o HTML5 Boilerplate
 
Wordpress
WordpressWordpress
Wordpress
 
Super Trunfo - Case de Dados Abertos
Super Trunfo - Case de Dados AbertosSuper Trunfo - Case de Dados Abertos
Super Trunfo - Case de Dados Abertos
 
Construindo Projetos Robustos em HTML5
Construindo Projetos Robustos em HTML5Construindo Projetos Robustos em HTML5
Construindo Projetos Robustos em HTML5
 
Augmented Reality in JavaScript
Augmented Reality in JavaScriptAugmented Reality in JavaScript
Augmented Reality in JavaScript
 
It's Javascript Time
It's Javascript TimeIt's Javascript Time
It's Javascript Time
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Os mitos do desenvolvimento front-end
Os mitos do desenvolvimento front-endOs mitos do desenvolvimento front-end
Os mitos do desenvolvimento front-end
 
Criando serviços com AngularJS
Criando serviços com AngularJSCriando serviços com AngularJS
Criando serviços com AngularJS
 
HTTP Interceptors com AngularJS
HTTP Interceptors com AngularJSHTTP Interceptors com AngularJS
HTTP Interceptors com AngularJS
 
Personal Kanban
Personal KanbanPersonal Kanban
Personal Kanban
 
JavaScript for Beginners
JavaScript for BeginnersJavaScript for Beginners
JavaScript for Beginners
 
Introdução ao JavaScript
Introdução ao JavaScriptIntrodução ao JavaScript
Introdução ao JavaScript
 
Web APIs you (probably) didn't know existed
Web APIs you (probably) didn't know existedWeb APIs you (probably) didn't know existed
Web APIs you (probably) didn't know existed
 

Similar a Javascript Orientado a Objetos - Fisl12

Poo slides01
Poo slides01Poo slides01
Poo slides01
jmtofoli
 

Similar a Javascript Orientado a Objetos - Fisl12 (20)

Poo slides01
Poo slides01Poo slides01
Poo slides01
 
Javascript Orientado a Objeto
Javascript Orientado a ObjetoJavascript Orientado a Objeto
Javascript Orientado a Objeto
 
Javascript
JavascriptJavascript
Javascript
 
Java Básico :: Orientação a objetos
Java Básico :: Orientação a objetosJava Básico :: Orientação a objetos
Java Básico :: Orientação a objetos
 
Java 00 Poo
Java 00 PooJava 00 Poo
Java 00 Poo
 
Java script
Java scriptJava script
Java script
 
Workshop Ruby on Rails dia 1 ruby-pt
Workshop Ruby on Rails dia 1 ruby-ptWorkshop Ruby on Rails dia 1 ruby-pt
Workshop Ruby on Rails dia 1 ruby-pt
 
Apresentação sobre MVVMC
Apresentação sobre MVVMCApresentação sobre MVVMC
Apresentação sobre MVVMC
 
Java aula 2
Java aula 2Java aula 2
Java aula 2
 
Workshop ExtJS4
Workshop ExtJS4Workshop ExtJS4
Workshop ExtJS4
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdf
 
Aula 09 - introducao oo
Aula 09 - introducao ooAula 09 - introducao oo
Aula 09 - introducao oo
 
Ruby para programadores java
Ruby para programadores javaRuby para programadores java
Ruby para programadores java
 
Groovy stack
Groovy stackGroovy stack
Groovy stack
 
Php5 e a orientação a objetos
Php5 e a orientação a objetosPhp5 e a orientação a objetos
Php5 e a orientação a objetos
 
Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1
 
(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012
 
Mini aula-java
Mini aula-javaMini aula-java
Mini aula-java
 
Voodoo é pra Jacu - Entendendo metaprogramação em ruby
Voodoo é pra Jacu - Entendendo metaprogramação em rubyVoodoo é pra Jacu - Entendendo metaprogramação em ruby
Voodoo é pra Jacu - Entendendo metaprogramação em ruby
 
POO2 - Orientacao a Objetos (1).pdf
POO2 - Orientacao a Objetos (1).pdfPOO2 - Orientacao a Objetos (1).pdf
POO2 - Orientacao a Objetos (1).pdf
 

Más de Emerson Macedo

Más de Emerson Macedo (20)

ElixirConf 2019 - 10M Monthly Ad Insertions with Phoenix and Broadway
ElixirConf 2019 - 10M Monthly Ad Insertions with Phoenix and BroadwayElixirConf 2019 - 10M Monthly Ad Insertions with Phoenix and Broadway
ElixirConf 2019 - 10M Monthly Ad Insertions with Phoenix and Broadway
 
The Conf 2019 - Elixir - Emerson Macedo
The Conf 2019 - Elixir - Emerson MacedoThe Conf 2019 - Elixir - Emerson Macedo
The Conf 2019 - Elixir - Emerson Macedo
 
Wanna be a manager? Not today - QCon São Paulo 2019
Wanna be a manager? Not today - QCon São Paulo 2019Wanna be a manager? Not today - QCon São Paulo 2019
Wanna be a manager? Not today - QCon São Paulo 2019
 
TheConf 2018 - How does your app behave when everything goes wrong
TheConf 2018 - How does your app behave when everything goes wrongTheConf 2018 - How does your app behave when everything goes wrong
TheConf 2018 - How does your app behave when everything goes wrong
 
DevConf OpenSanca 2018 - How does your application behaves when everything go...
DevConf OpenSanca 2018 - How does your application behaves when everything go...DevConf OpenSanca 2018 - How does your application behaves when everything go...
DevConf OpenSanca 2018 - How does your application behaves when everything go...
 
How your app behaves when everything goes wrong - Ruby Conf BR 2017
How your app behaves when everything goes wrong - Ruby Conf BR 2017How your app behaves when everything goes wrong - Ruby Conf BR 2017
How your app behaves when everything goes wrong - Ruby Conf BR 2017
 
Beyond your daily coding - The Conf Brazil 2017 Keynote
Beyond your daily coding - The Conf Brazil 2017 KeynoteBeyond your daily coding - The Conf Brazil 2017 Keynote
Beyond your daily coding - The Conf Brazil 2017 Keynote
 
CEJS 2016 - Please learn that shit
CEJS 2016 - Please learn that shitCEJS 2016 - Please learn that shit
CEJS 2016 - Please learn that shit
 
How Elixir helped us scale our Video User Profile Service for the Olympics
How Elixir helped us scale our Video User Profile Service for the OlympicsHow Elixir helped us scale our Video User Profile Service for the Olympics
How Elixir helped us scale our Video User Profile Service for the Olympics
 
QCon SP 2016 - Video Authorization: from chaos to 25ms response time
QCon SP 2016 - Video Authorization: from chaos to 25ms response timeQCon SP 2016 - Video Authorization: from chaos to 25ms response time
QCon SP 2016 - Video Authorization: from chaos to 25ms response time
 
Qcon Rio 2015 - Microservices
Qcon Rio 2015 - MicroservicesQcon Rio 2015 - Microservices
Qcon Rio 2015 - Microservices
 
Microservices Case: GloboTV e Globosat Play
Microservices Case: GloboTV e Globosat PlayMicroservices Case: GloboTV e Globosat Play
Microservices Case: GloboTV e Globosat Play
 
Secomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - IntroduçãoSecomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - Introdução
 
Jogos com NodeJS e Browser - QCON SP 2011
Jogos com NodeJS e Browser - QCON SP 2011Jogos com NodeJS e Browser - QCON SP 2011
Jogos com NodeJS e Browser - QCON SP 2011
 
1 encontro Node.JS Brasil
1 encontro Node.JS Brasil1 encontro Node.JS Brasil
1 encontro Node.JS Brasil
 
BrazilJS - Node.JS Realtime Web Applications
BrazilJS - Node.JS Realtime Web ApplicationsBrazilJS - Node.JS Realtime Web Applications
BrazilJS - Node.JS Realtime Web Applications
 
RubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJSRubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJS
 
Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011
 
Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010
 
DevInRio 2010 - NodeJS
DevInRio 2010 - NodeJSDevInRio 2010 - NodeJS
DevInRio 2010 - NodeJS
 

Último

Último (6)

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

Javascript Orientado a Objetos - Fisl12