Agora é a vez dos construtores, que em Mootools têm um método especial de se declarar. Neste artigo também veremos a criação de uma classe completa, com funcionalidades que nos servirão para afiar os conhecimentos adquiridos.
O que é um construtor
Um construtor em programação orientada a objetos se encarrega de resumir a tarefa de iniciação dos objetos. Ao definir uma classe podemos declarar um construtor, opcionalmente. Se este existe, no momento de instanciar um objeto a partir dessa classe, se realizará uma chamada ao construtor para iniciar as propriedades do objeto criado.
Podemos passar parâmetros ao construtor que poderão ser utilizados para iniciar o objeto.
Declaração de um construtor em Mootools
Um construtor de uma classe Mootools se declara como se fosse um método corrente, porém, com um nome fixo: "initialize". Tal método será uma função que pode receber parâmetros. Dentro da função se poderão realizar diversas ações, sendo o mais corrente a atribuição de valores às propriedades do objeto.
Vejamos um exemplo de classe com seu construtor:
var ClasseConstrutor = new Class({
propriedade1: null,
initialize: function(){
this.propriedade1 = 1;
}
});
Como se pode ver, o objeto se criou com uma propriedade, definida na lista de propriedades com valor null. Logo, no construtor se atualiza o valor da propriedade e se atribui 1.
Há que remarcar aqui a utilização de "this", que em linhas gerais serve para referenciar ao objeto sobre o que se está invocando o método. Como dissemos, um construtor se executa quando se está criando um objeto, durante o processo de instanciação. Portanto, "this" servirá para fazer referência ao objeto que se está construindo.
Dado o construtor que criamos, todos os objetos da classe ClasseConstrutor, no momento de sua criação, terão o valor de propriedade1 = 1.
Outro exemplo de construtor
Seguimos as explicações com este outro exemplo de classe realizada com mootools, que tem um construtor. O nome da classe é "Veiculo" e simplificamos e idealizamos bastante o funcionamento de um veículo qualquer. Terá duas propriedades: estado ("Detido" ou "Em funcionamento") e cor, configurável por meio do construtor. Ademais, criaremos dois métodos nas classe para colocar em funcionamento ou parar o veículo.
var Veiculo = new Class({
estado: "Detido",
initialize: function(color){
this.color = color;
},
arrancar: function(){
this.estado = "Em funcionamento";
},
deter: function(){
this.estado = "Detido";
}
});
Vemos que a classe "Veículo" tem à princípio uma propriedade, de nome "estado" e que o valor da propriedade, no momento de declará-la se marcou como "Detido".
Logo, vemos em construtor, no qual se recebe um parâmetro, que é a cor do veículo. A cor recebida por parâmetro se atribui a this.color. Com isso se gera uma propriedade nova no objeto, chamada "color" ao que se atribui a cor recebida no parâmetro.
Com isto vemos que, à parte de definir as propriedades da classe na hora de declarar seus componentes, também se podem criar propriedades à medida que se executam os métodos. Como o construtor sempre se executa ao criar o objeto, podemos estar seguros que todos os objetos criados terão a propriedade "color", atribuída ao valor de cor definida no parâmetro.
Logo, vemos dois métodos que simplesmente atualizam a propriedade "estado", para marcar se o veículo está em funcionamento ou detido.
Poderíamos criar um objeto da classe "Veículo" da seguinte maneira:
var meuVeiculo = new Veiculo("vermelho");
Este objeto terá como propriedade "cor" o valor "vermelho". Portanto, se mostramos em uma caixa de alerta a propriedade, nos apareceria "vermelho":
alert (meuVeiculo.color);
Podemos criar outro objeto da classe "Veiculo" com cor "azul", desta maneira:
var meuVeiculo = new Veiculo("azul");
Vejamos alguns usos simples que poderíamos dar ao objeto criado, para mostrar o estado, e para mudá-lo com os métodos arrancar e deter.
var meuVeiculo = new Veiculo("vermelho");
alert (meuVeiculo.color);
alert (meuVeiculo.estado);
meuVeiculo.arrancar();
alert (meuVeiculo.estado);
meuVeiculo.deter();
alert (meuVeiculo.estado);
![]() | Instanciar e trabalhar com objetos de classes criadas com Mootools | Extends: Estendendo classes com Mootools | ![]() |