JavaScript - Programação orientada a objetos
Apesar de não possuir a estrutura mais elementar de uma linguagem orientada a objetos, a classe, a linguagem JavaScript pode sim, ser orientada a objetos. Neste artigo, não pretendo ensinar programação orientada (POO) a objeto, vou demostrar o básico para programar de forma OO em JavaScript.
Parte 2: Encapsulamento - Herança - Prototype
Encapsulamento
O encapsulamento é um do principais pontos da programação orientada a objetos (OO).Basicamente, encapsular significa separar um programa em partes, protegendo o acesso direto aos atributos de uma classe.
Para isso, geralmente, são utilizados modificadores de acesso e métodos específicos para a manipulação destes atributos (set / get).
Em JavaScript não temos estes modificadores de acesso, mas podemos criar encapsulamento assim:
Neste exemplo, usei "var" e "this" para simular os modificadores de acesso privado e público (ainda não tenho uma boa ideia para simular o protegido).
Com isso já podemos considerar nosso código encapsulado.
Herança
Herança é a habilidade de uma classe reutilizar (herdar) as características (atributos) e comportamentos (métodos) de outra.A herança é geralmente caracterizada usando a relação "é um".
Exemplo: Cachorro é um Animal
Cachorro herda as características e comportamentos de um animal.
Vejamos um exemplo sobre como usar herança em JavaScript. Primeiro criamos duas "classes" (super e sub-classe):
Carro é um VeiculoTerrestre - Por isso é interessante herdar as características e comportamentos de VeiculoTerrestre em Carro.
JavaScript não implementa uma palavra chave (extends) para indicar que uma classe herda de outra, mas podemos utilizar herança através do prototype assim:
Neste exemplo, usamos o prototype para criar a herança entre as "classes" VeiculoTerreste e Carro.
O prototype é propriedade que nos permite adicionar características e comportamentos para as "classes", após sua definição, assim podemos reutilizar toda a definição de uma classe em outra.
Mais do prototype
Utilizamos o prototype para criar herança colocando as funcionalidades de "VeiculoTerrestre" em "Carro".O que pode ter passado desapercebido, é que através do prototype podemos criar novas características para as "classes" já definidas pelo JavaScript.
Como exemplo, vamos colocar um novo método na "classe" String do JavaScript.
Geralmente, usamos a função parseInt para converter String para inteiros, vamos deixar essa conversão mais OO, colocando um método parseInt em String, assim:
É um exemplo simples (talvez inútil), mas a ideia é essa...
Conclusão
Termino esse artigo por aqui. Espero que seja útil.Qualquer correção, dúvida ou sugestão, basta comentar.
Valeu pessoal!
Uma luz acendeu na minha cabeca ao ler esse seu artigo, eu ja uso o javascript por muitos anos ( mais nunca estudei a fundo ), nos poucos artigos que eu li sobre javascript eu sempre ouvi a palavra "Orientada a Objeto" mais nunca eu realmente entendi oque era isso, quando eu escrevia os meus javascripts sempre os fiz direto, linear... quando eu via os codigos mais complexos eu simplemente copiava e colava... agora depois desse artigo foi como um big bang na minha cabeca... agora as coisas ficaram claras, wow !!!!
Valeu cara, voce jogou o meu conhecimento em javascript em outro nivel, eu vou retornar aos meus scripts mais agora desvendando novas fronteiras (y)