Conceptos de programación: Creando Clases en AS3

Aprende a escribir Clases con ActionScript 3 con éste tutorial el cual es una traducción de un artí­culo del Adobe Developer Connection.

ActionScript 3 es un lenguaje de programación orientado a objetos. Casi que lo único que necesitarás para construir una aplicación usando ActionScript 3 es un objeto ya sea de tipo – Sprite, MovieClip, TextField, Array o alguno por el estilo. Con lo anterior puedes crear aplicaciones complejas e interesantes juegos usando únicamente las classes que son parte de ActionScript 3. Sin embargo las posibilidades de programación parecen no tener fin cuando aprendes a diseñar y crear tus propios objetos los cuales son especí­ficos y potencialmente mejorados para lo que necesitas.

Todos los objetos, sin importar si son de la librerí­a principal de ActionScript 3 o si los has creado tu mismo, provienen de una clase. En este artí­culo aprenderás lo básico para escribir una clase, teniendo la certeza de que haces lo correcto.

Para continuar es recomendable que tengas algo de experiencia usando AS3 tanto en sintaxis como en variables y funciones.

Escribiendo una clase

Una Clase es una muestra o plantilla o una serie de instrucciones para construir un objeto de algún tipo especí­fico. Cada objeto se construye a partir de una clase.
Una clase es como una receta. Tu no puedes comerte la receta pero puedes comer el resultado de la preparación de la misma lo cual es conocido en nuestro ámbito como una instancia. Veamos como una clase de ponqué de chocolate deberí­a aparecer en el código:

package tortas {
   import flash.display.MovieClip;
   public class TortaChocolate extends MovieClip{
      public var numeroVelas:int;

      public function TortaChocolate(){ }

      public function ponerVelasEnTorta():void{
         trace("Poniendo " + numeroVelas + " velas en la torta.");
      }
   }
}

En ActionScript 3, todas las clases tienen que tener 3 componentes, Una definición de paquete (package), una declaración de la clase, y un cuerpo de la clase con un método constructor. Pueden ocurrir errores de compilación si alguno de estos componentes hace falta o está mal codificado.

Definición de Paquete.

Package tortas {...}

La primer lí­nea de una clase le dice al compilador a que paquete o grupo de clases es al que pertenece. Los paquetes organizan sus clases en grupos y son usados por el compilador para crear un único, y correcto nombre. En este ejemplo, la clase está en el paquete tortas.

Declaración de la clase

La tercera lí­nea de codigo en el ejemplo de arriba.

public class TortaChocolate extends MovieClip{...}

Es la sentencia para hacer la declaración de la clase. la palabra clave class le dice al compilador que una clase está por ser definida. Esta, está precedida por una palabra clave de atributo (public en este caso) y sigue con el nombre de la clase TortaChocolate.
Los atributos de la clase son similares a los atributos de control de acceso usados para variables y funciones. Cuando se aplican a la declaración de la clase, el atributo modifica toda la clase.

Tabla 1. Atributos de clase

Atributo Definición
dynamic Permite que se adieran propiedades a las instances en tiempo de ejecución..
final No puede ser extended pro otra clase.
internal(default) Visible a las referencias dentro del paquete actual.
public Visible a referencias en cualquier lugar.

Nota: Las clases abstractas no están soportadas en ActionScript 3. Luego no hay palabra clave abstract. También, los atributos private y protected no pueden ser aplicados a clases. Estos solo tienen sentido dentro de una definición de clase. Los nombres de las clases siguen convenciones similares a las de las variables en Action Script 3. La principal diferencia e que los nombres de las clases siempre inician con una Mayúscula.

El nombre de la clase debe ser descriptivo. TortaChocolate, EstadoProyecto, ClienteProyecto, BotonPersonalizado, ItemCarroCompras y PartePrograma son todos muy buenos ejemplos de Nombres de clase.

El nombre del archivo fuente tiene que ser el mismo de la clase con la extensión .as al final. Por ejemplo, el archivo que define la clase TortaChocolate tiene que llamarse TortaChocolate.as.

La sentencia de declaración de la clase también incluirá la palabra extends seguida con un nombre de clase o la palabra implements seguida por un nombre de interfaz si una interfaz o algún tipo de herencia se está usando.

Cuerpo de la clase con el método constructor

Todo el código que está contenido en las llaves redondas las cuales están después de la declaración de la clase es considerado el cuerpo de la clase. Recuerden, los objetos son componentes que se contienen a sí­ mismo los cuales tienen propiedades y métodos que se necesitan para hacer útiles cierto tipo de datos. Acá tenemos el cuerpo de la clase para la clase TortaChocolate:

      public var numeroVelas:int;

      public function TortaChocolate(){ }

      public function ponerVelasEnTorta():void{
         trace("Poniendo " + numeroVelas + " velas en la torta.");
      }

En el código, las propiedades son variables declaradas dentro de una clase. La clase TortaChocolate solo tiene una propiedad: numeroVelas. Los métodos son funciones definidas dentro de una clase. TortaChocolate tiene dos métodos: ponerVelasEnTorta() y el método constructor TortaChocolate().

Cada clase tiene un método constructor. El método constructor es un método que se llama automáticamente en el momento en el que se genera la instancia. Cuando usas la palabra clave new para crear una instancia de una clase, lo que realmente estás haciendo es llamando al método constructor de la clase. Cualquier código incluido en el método constructor es ejecutado cada vez que la clase es instanciada. Hay algunas cosas que recordar acerca del método constructor. La primera es que siempre es un método público(con atributo public). ActionScript 3 no permite que hayan métodos de constructor diferentes a públicos. No puedes usar ningún otro atributo de control de acceso que no sea public. Tampoco puedes usar un namespace definido por el usuario en un método constructor. Segundo, el nombre del método constructor tiene que ser el mismo de la clase. En este ejemplo, el nombre de la clase es TortaChocolate así­ que el nombre del método constructor es también TortaChocolate. Finalmente, el constructor no puede tener un tipo de retorno declarado como si lo pueden tener las demás funciones.

El método constructor retorna una instancia de la clase luego de llevar a cabo el proceso definido en sí­ mismo. El compilador explí­citamente entiende que el tipo de retorno es la clase del cual está construyendo.

Si entendiste la información correctamente puedes verificar su funcionamiento usando directamente Flash de la siguiente manera:

    • Abre Adobe Flash Professional y crea un nuevo archivo Flash ActionScript 3 y ponle un nombre como “chocolate”.

    • Luego crea un nuevo archivo Archivo de clase Action Script 3.0 y guárdalo en una carpeta que se llame “tortas”, en el mismo lugar donde se encuentra el archivo .fla


    • Verifica que el archivo de la clase contenga la siguiente información:
      package tortas {
      	import flash.display.MovieClip;
      
         public class TortaChocolate extends MovieClip{
            public var numeroVelas:int = 3;
      
            public function TortaChocolate(){
      		  ponerVelasEnTorta();
      		}
      
            public function ponerVelasEnTorta():void{
               trace("Poniendo " + numeroVelas + " velas en la torta.");
            }
         }
      }

      esta última versión contiene un cambio importante, y simplemente consiste en hacer un llamado de la función ponerVelasTorta() en el constructor de la clase, además le asignamos un valor (3) a la cantidad de velas.

    • Indí­cale a Flash cúal es el archivo de clase que quieres usar para tu publicación como lo vemos a continuación.
    • Listo, Ctrl + Enter para probar, debe aparecer algo como esto:
      Poniendo 3 velas en la torta.

De esta manera es que se integran las clases con los archivos .FLA directamente, y esto es lo que deberí­amos hacer cuando no queremos que nuestra lí­nea de tiempo contenga códigos fuente de alta lógica.

Con set información aprendida, podemos llevar a cabo muchas tareas manejando archivos de clases externos, al punto de empezar a planear juegos y aplicaciones manejando objetos.

Fuente: Adobe Developer Connection

4 thoughts on “Conceptos de programación: Creando Clases en AS3

  1. November 1, 2011

    Carlos Vergara Reply

    Esta bueno el tutorial, espero sigan publicando nociones de AS3. Es un lenguaje excelente.

    • November 1, 2011

      whgandalf Reply

      Claro que si Carlos, hay mucha tela para cortar!

  2. December 20, 2011

    Comunidad AdobeXpert Reply

    Conceptos de programación: Creando Clases en AS3 (post por @WhGandalf) http://t.co/H3dj9fui

  3. December 20, 2011

    Jorge Reply

    Excelente..gracias x el aporte, y x fa q no sea el utimo aporte de AS3, sigan adelante y éxitos

Leave a Reply

Your email address will not be published. Required fields are marked *