A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Tutoriais e Programação

Javascript - Orientada a Objeto

Seg

4

Dez

2006


21:00

(29 votos, média 4.34 de 5) 


Nível intermediário Fala-se muito em programação orientada a objeto, mas é difícil encontrar programadores que realmente usam esta técnica. No começo é meio difícil de entender, mas, uma vez dominada, não dá pra pensar em viver sem ela (êta paixão braba :heart: ).

O planejamento

A primeira coisa que precisa ficar bem clara é que tipo de objeto se pretende criar. Depois é preciso planejar bem como este objeto será estruturado. Quando tudo estiver definido, basta seguir o roteiro mostrado a seguir.

O tipo de objeto

Vou usar como exemplo uma agenda de endereços.

A estrutura

Como é uma agenda bem simples, as informações serão apenas o nome e o telefone.

O construtor

Para que um objeto exista, é preciso construí-lo... e quem constrói é um construtor. Um construtor é uma espécie de função especial e a JavaScript possui um punhado delas. Se você leu o tutorial sobre arrays então já teve o prazer de conhecer um construtor, o senhor Array (talvez seja por isto que seu nome é escrito com A maiúsculo smile ). Quando se quer construir uma matriz chamamos o construtor Array e indicamos que desejamos um novo objeto do tipo que ele sabe construir, ou seja, alguma coisa como var matriz = new Array(5).

Como a JavaScript não tem idéia do objeto que queremos criar, vamos ter que por a mão na massa e criar um construtor particular:

// Construtor
function Agenda( nome, fone ) {
   this.nome = nome;
   this.fone = fone;
}

Cada um dos elementos deste objeto é indicado pelo prefixo .this. Neste caso, qualquer objeto construído pela Agenda terá dois elementos (nome e fone), também chamados de variáveis membro do objeto ou propriedades do objeto. Para referenciar uma variável membro do objeto criado, faça o seguinte:

alert( "O telefone da " + Agenda.nome + " é " + Agenda.fone );

Agora vamos testar o construtor Agenda no ScriptBox. Clique no botão [Rodar] e observe o resultado.

ScriptBox

Observe que podemos chamar o novo objeto de agenda, mas não de Agenda - com inicial maiúscula é o nome do construtor!

Tudo muito bem, tudo muito bom, mas esta agendinha tem apenas um registro e está muito mixuruca. Acontece que o construtor, como é o dono do molde (tecnicamente chamado de classe), pode nos fornecer quantos objetos pedirmos e podemos guardar estes objetos dentro de um outro objeto - um array - sem problema nenhum:

var matriz = new Array(3);
matriz[0] = new Agenda( 'Maricota', '555-5555' );
matriz[1] = new Agenda( 'Pedrim', '333-3333' );
matriz[2] = new Agenda( 'vovó', '000-0000' );

Neste caso, se quisermos o telefone do Pedrim, chamamos:

alert( matriz[1].nome + " " + matriz[1].fone );

Métodos

Uma classe que possua apenas propriedades (variáveis membro) serve de molde apenas para objetos um tanto paradões, né não? Acontece que podemos criar um pouco de movimento adicionando métodos ao molde. Por exemplo, podemos criar um método que produza um alert padronizado. Para isto, coloque logo depois do construtor o seguinte:

// Método para a classe Agenda
function nomeFone() {
   alert( this.nome + " tem o telefone " + this.fone );
}

// Protótipo do método
Agenda.prototype.nomeFone = nomeFone;

Agora está tudo mais fácil. Copie e cole o script completo no ScriptBox e curta o efeito:

// Construtor
function Agenda( nome, fone ) {
   this.nome = nome;
   this.fone = fone;
}

// Método para a classe Agenda
function nomeFone() {
   alert( this.nome + " tem o telefone " + this.fone );
}

// Protótipo do método
Agenda.prototype.nomeFone = nomeFone;

// Criando objetos
var matriz = new Array(3);
matriz[0] = new Agenda( 'Maricota', '555-5555' );
matriz[1] = new Agenda( 'Pedrim', '333-3333' );
matriz[2] = new Agenda( 'vovó', '000-0000' );

// Acionando um objeto
matriz[1].nomeFone();

Referências

играть в игровые автоматы онлайн бесплатно вулканроссия интернет магазинлобановский александр игоревич харьковвидеокамеры уличногоvsemsmart.ru харьков погода на неделюMFX Broker

Informações adicionais