Creación de clases personalizadas

El proceso de creación de clases para usarlas en los proyectos puede parecer desalentador. Sin embargo, la tarea más difícil de la creación de una clase es su diseño, es decir, la identificación de los métodos, propiedades y eventos que va a incluir.

Estrategias de diseño de una clase

El tema del diseño orientado a objetos es complejo; algunas personas han dedicado toda su carrera al estudio académico y la práctica profesional de esta disciplina. Sin embargo, a continuación se sugieren algunos enfoques que pueden ayudarle a comenzar.

  1. Considere la función que desempeñarán las instancias de esta clase en la aplicación. Normalmente, los objetos desempeñan una de estas tres funciones:

    • Objeto de valor: estos objetos actúan principalmente como contenedores de datos. Es probable que tengan varias propiedades y pocos métodos (o algunas veces ninguno). Normalmente son representaciones de código de elementos claramente definidos. Por ejemplo, una clase Song (que representa una sola canción real) o una clase Playlist (que representa un grupo conceptual de canciones) en una aplicación de reproductor de música.

    • Objetos de visualización: son objetos que aparecen realmente en la pantalla. Por ejemplo, elementos de interfaz de usuario como una lista desplegable o una lectura de estado, o elementos gráficos como las criaturas de un videojuego, etc.

    • Estructura de aplicación: estos objetos desempeñan una amplia gama de funciones auxiliares en la lógica o el procesamiento llevado a cabo por las aplicaciones. Por ejemplo, puede hacer que un objeto realice determinados cálculos en una simulación biológica. Puede hacer un objeto responsable de sincronizar valores entre un control de dial y una lectura de volumen en una aplicación de reproductor de música. Otro puede administrar las reglas de un videojuego. O bien, puede crear una clase que cargue una imagen guardada en una aplicación de dibujo.

  2. Decida la funcionalidad específica que necesitará la clase. Los distintos tipos de funcionalidad suelen convertirse en los métodos de la clase.

  3. Si se prevé que la clase actúe como un objeto de valor, decida los datos que incluirán las instancias. Estos elementos son buenos candidatos para las propiedades.

  4. Dado que la clase se diseña específicamente para el proyecto, lo más importante es proporcionar la funcionalidad que necesita la aplicación. Quizá le sirva de ayuda formularse estas preguntas:

    • ¿Qué elementos de información almacenará, rastreará y manipulará la aplicación? Esta decisión le ayudará a identificar los posibles objetos de valor y las propiedades.

    • ¿Qué conjunto de acciones realiza la aplicación? Por ejemplo, ¿qué sucede cuando la aplicación se carga por primera vez, cuando se hace clic en un botón determinado, cuando una película deja de reproducirse, etc? Éstos son buenos candidatos para los métodos. También puede ser propiedades, si las “acciones” implican cambiar valores individuales.

    • Para cualquier acción, ¿qué información es necesaria para realizar esa acción? Estos elementos de información se convierten en los parámetros del método.

    • Mientras la aplicación lleva a cabo su trabajo, ¿qué cambiará en la clase que deba ser conocido por las demás partes de la aplicación? Éstos son buenos candidatos para los eventos.

  5. ¿Existe algún objeto similar al que se necesita, excepto que carece de cierta funcionalidad adicional que desea añadir? Considere la creación de una subclase. (Una subclase es una clase que se basa en la funcionalidad de otra clase existente, en lugar de definir su propia funcionalidad.) Por ejemplo, para crear una clase que sea un objeto visual en pantalla, utilice el comportamiento de un objeto de visualización existente como base para la clase. En este caso, el objeto de visualización (por ejemplo, MovieClip o Sprite) sería la clase base y su clase sería una ampliación de dicha clase.

Escritura del código de una clase

Cuando ya tenga un diseño para la clase, o al menos alguna idea de la información que almacena y de las acciones que necesitará realizar, la sintaxis real de escritura de una clase es bastante sencilla.

A continuación se describen los pasos básicos para crear su propia clase de ActionScript:

  1. Abra un documento de texto nuevo en el programa editor de texto de ActionScript.

  2. Introduzca una sentencia class para definir el nombre de la clase. Para añadir una sentencia class, indique las palabras public class y a continuación el nombre de la clase. Añada llaves de cierre y apertura que contengan el contenido de la clase (las definiciones de la propiedad y el método). Por ejemplo:

    public class MyClass 
    { 
    }

    La palabra public indica que es posible acceder a la clase desde cualquier otro código. Para conocer otras alternativas, consulte Atributos del espacio de nombres de control de acceso.

  3. Escriba una sentencia package para indicar el nombre del paquete que contiene la clase. La sintaxis consta de la palabra package, seguida del nombre completo del paquete, más las llaves de apertura y cierre alrededor del bloque de sentencias class). Por ejemplo, cambie el código en el paso anterior a lo siguiente:

    package mypackage 
    { 
        public class MyClass 
        { 
        } 
    }
  4. Defina cada propiedad de la clase con la sentencia var en el cuerpo de la clase. La sintaxis es la misma que se usa para declarar cualquier variable (añadiendo el modificador public). Por ejemplo, si se añaden estas líneas entre las llaves de apertura y cierre de la definición de clase, se crearán las propiedades textProperty, numericProperty y dateProperty:

    public var textProperty:String = "some default value"; 
    public var numericProperty:Number = 17; 
    public var dateProperty:Date;
  5. Defina cada método de la clase con la misma sintaxis empleada para definir una función. Por ejemplo:

    • Para crear un método myMethod(), introduzca:

      public function myMethod(param1:String, param2:Number):void 
      { 
          // do something with parameters 
      }
    • Para crear un constructor (el método especial al que se llama como parte del proceso de creación de una instancia de una clase), cree un método cuyo nombre coincida exactamente con el nombre de la clase:

      public function MyClass() 
      { 
          // do stuff to set initial values for properties 
          // and otherwise set up the object 
          textVariable = "Hello there!"; 
          dateVariable = new Date(2001, 5, 11); 
      }

      Si no incluye un método constructor en la clase, el compilador creará automáticamente un constructor vacío en la clase. (Es decir, un constructor sin parámetros ni sentencias.)

    Existen algunos otros elementos de la clase que pueden definirse. Estos elementos presentan mayor complejidad.

    • Los descriptores de acceso son un cruce especial entre un método y una propiedad. Cuando se escribe el código para definir la clase, el descriptor de acceso se escribe como un método, de forma que es posible realizar varias acciones, en lugar de simplemente leer o asignar un valor, que es todo lo que puede hacerse cuando se define una propiedad. Sin embargo, cuando se crea una instancia de la clase, se trata al descriptor de acceso como una propiedad y sólo se utiliza el nombre para leer o asignar el valor.

    • En ActionScript, los eventos no se definen con una sintaxis específica. Los eventos se definen en la clase utilizando la funcionalidad de la clase EventDispatcher.