Constructores en Mootools

  • Por
Qué es un constructor y como se crear constructores a las clases de Mootools. Seguimos explicando acerca del trabajo con clases en Mootools.
En nuestro manual de Mootools ya hemos empezado a conocer cosas sobre el uso de clases. Hemos creado clases y objetos a partir de ellas, hemos conocido lo que son las propiedades y los métodos, pero todavía nos queda mucho camino para recorrer antes que consigamos dominar las clases en Mootools.

Ahora le toca el turno a los constructores, que en Mootools tienen un método especial de declarase. En este artículo también veremos la creación de una clase completa, con funcionalidades que nos servirán para afianzar los conocimientos adquiridos.

Qué es un constructor

Un constructor en programación orientada a objetos se encarga de resumir la tarea de inicialización de los objetos. Al definir una clase podemos declarar un constructor, opcionalmente. Si existe éste, en el momento de instanciar un objeto a partir de esa clase, se realizará una llamada al constructor para inicializar las propiedades del objeto creado.

Al constructor se le pueden pasar parámetros que se podrán utilizar para inicializar el objeto.

Declaración de un constructor en Mootools

Un constructor de una clase Mootools se declara como si fuera un método corriente, pero con un nombre fijo: “initialize”. Dicho método será una función que puede recibir parámetros. Dentro de la función se podrán realizar diversas acciones, siendo lo más corriente la asignación de valores a las propiedades del objeto.

Veamos un ejemplo de clase con su constructor:

var ClaseConstructor = new Class({
   propiedad1: null,

   initialize: function(){
      this.propiedad1 = 1;
   }
});

Como se puede ver, el objeto se ha creado con una propiedad, definida en la lista de propiedades con valor null. Luego, en el constructor se actualiza el valor de la propiedad y se le asigna 1.

Habría que remarcar aquí la utilización de “this”, que en líneas generales sirve para referenciar al objeto sobre el que se está invocando el método. Como hemos dicho, un constructor se ejecuta cuando se está creando un objeto, durante el proceso de instanciación. Por lo tanto, “this” servirá para hacer referencia al objeto que se está construyendo.

Dado el constructor que hemos creado, todos los objetos de la clase ClaseConstructor, en el momento de su creación, tendrán el valor de propiedad1 = 1.

Otro ejemplo de constructor

Seguimos las explicaciones con este otro ejemplo de clase realizada con mootools, que tiene un constructor. El nombre de la clase es “Vehiculo” y hemos simplificado e idealizado bastante el funcionamiento de un vehículo cualquiera. Tendrá dos propiedades: estado (“Detenido” o “En marcha”) y color, configurable por medido del constructor. Además crearemos dos métodos en la clase para poner en marcha o parar el vehículo.

var Vehiculo = new Class({
   estado: "Detenido",
   
   initialize: function(color){
      this.color = color;
   },
   
   arrancar: function(){
      this.estado = "En marcha";
   },
   
   detener: function(){
      this.estado = "Detenido";
   }
});

Vemos que la clase “Vehiculo” tiene en principio una propiedad, de nombre “estado” y que el valor de la propiedad, en el momento de declararla se ha marcado como “Detenido”.

Luego vemos en constructor, en el que se recibe un parámetro, que es el color del vehículo. El color recibido por parámetro se asigna a this.color. Con ello se genera una propiedad nueva en el objeto, llamada “color” al que se le asigna el color recibido en el parámetro.

Con esto vemos que, aparte de definir las propiedades de la clase a la hora de declarar sus componentes, también se pueden crear propiedades a medida que se ejecutan los métodos. Como el constructor siempre se ejecuta al crear el objeto, podemos estar seguros que todos los objetos creados tendrán la propiedad “color”, asignada al valor de color definido en el parámetro.

Luego vemos dos métodos que simplemente actualizan la propiedad “estado”, para marcar si el vehículo está en marcha o detenido.

Podríamos crear un objeto de la clase “Vehiculo” de la siguiente manera:

var miVehiculo = new Vehiculo("rojo");

Este objeto tendrá como propiedad “color” el valor “rojo”. Por tanto, si mostramos en una caja de alerta la propiedad, nos aparecería “rojo”:

alert (miVehiculo.color);

Podemos crear otro objeto de la clase “Vehiculo” con color “azul”, de esta manera:

var miVehiculo = new Vehiculo("azul");

Veamos algunos usos simples que podríamos dar al objeto creado, para mostrar el estado, y para cambiarlo con los métodos arrancar y detener.

var miVehiculo = new Vehiculo("rojo");
alert (miVehiculo.color);
alert (miVehiculo.estado);

miVehiculo.arrancar();
alert (miVehiculo.estado);

miVehiculo.detener();
alert (miVehiculo.estado);

Podemos ver el ejemplo en ejecución de esta clase vehículo y su uso en una página aparte.