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.
- Piense en 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 decir, que es probable que tengan varias propiedades y pocos métodos (o algunas veces ninguno). Normalmente son representaciones de código de elementos claramente definidos, como 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. Algunos ejemplos son: un objeto que realice determinados cálculos en una simulación biológica, 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, uno que administre las reglas de un videojuego u otro que cargue una imagen guardada en una aplicación de dibujo.
- Objeto de valor: estos objetos actúan principalmente como contenedores de datos, es decir, que es probable que tengan varias propiedades y pocos métodos (o algunas veces ninguno). Normalmente son representaciones de código de elementos claramente definidos, como 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.
- Decida la funcionalidad específica que necesitará la clase. Los distintos tipos de funcionalidad suelen convertirse en los métodos de la clase.
- 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.
- 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é conjuntos de acciones deberán realizarse, por ejemplo, al cargar la aplicación por primera vez, al hacer clic en un botón concreto o al detener la reproducción de una película? Estos serán buenos candidatos para los métodos (o propiedades, si las "acciones" implican simplemente cambiar valores individuales)
- En cualquier acción determinada, ¿qué información necesitará saber la clase para realizar dicha 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.
- ¿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.
- Si ya existe un objeto similar al que necesita, a no ser que carezca de alguna funcionalidad adicional que desee añadir, considere la posibilidad de crear una subclase (una clase que se basa en la funcionalidad de una clase existente, en lugar de definir toda su propia funcionalidad). Por ejemplo, si desea crear una clase que sea un objeto visual en la pantalla, deseará usar el comportamiento de uno de los objetos de visualización existentes (por ejemplo, Sprite o MovieClip) como base de la clase. En ese caso, MovieClip (o Sprite) sería la clase base y su clase sería una ampliación de dicha clase.
Cuando ya tenga un plan de diseño para la clase, o al menos alguna idea de la información de la que deberá hacer un seguimiento y de las acciones que necesitará realizar, la sintaxis real de escritura de una clase es bastante directa. A continuación se describen los pasos mínimos para crear su propia clase de ActionScript:
1 Abra un nuevo documento de texto en un programa específico de ActionScript como Flex Builder o Flash, en una herramienta de programación general como Dreamweaver o en cualquier programa que permita trabajar con documentos de texto simple.
2 Introduzca una sentencia class para definir el nombre de la clase. Para ello, introduzca las palabras public class y, a continuación, el nombre de la clase, seguido de llaves de apertura y cierre que rodearán el contenido de la clase (las definiciones de métodos y propiedades). Por ejemplo:
public class MiClase
{
}
La palabra public indica que es posible acceder a la clase desde cualquier otro código.
3 Escriba una sentencia package para indicar el nombre del paquete en el que se encontrará la clase. La sintaxis es la palabra package, seguida del nombre completo del paquete, seguido de llaves de apertura y cierre (que rodearán el bloque de sentencias class). Por ejemplo, se cambiaría el código del paso anterior por el siguiente:
package MiPaquete
{
public class MiClase
{
}
}
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 los paréntesis de apertura y cierre de la definición de clase, se crearán las propiedades textVariable, numericVariable y dateVariable:
public var textVariable:String = "some default value";
public var numericVariable:Number = 17;
public var dateVariable: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 MiMetodo(), introduzca:
public function MiMetodo(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 MiClase()
{
// Hacer cosas para establecer los valores iniciales de las propiedades
// Y lo contrario, seleccione el objeto.
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 (sin parámetros ni sentencias) en la clase.
Hay algunos otros elementos de la clase que pueden definirse y que son más complicados.
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. En lugar de eso, los eventos de la clase se definen con la funcionalidad de la clase EventDispatcher para realizar un seguimiento de los detectores de eventos y notificarles los eventos.