Qué es un constructor y como se crear constructores a las clases de Mootools. Seguimos explicando acerca del trabajo con 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.
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...