Documentation Flash CS3 |
|||
| Programmation avec ActionScript 3.0 > Programmation orientée objet en ActionScript > Classes > Les énumérations et les classes | |||
Les énumérations sont des types de données que vous pouvez créer pour encapsuler un petit ensemble de valeur. Contrairement à C++ avec le mot-clé enum et à Java avec l'interface d'énumération, ActionScript 3.0 ne dispose pas d'un mécanisme d'énumération spécifique. Il est toutefois possible de créer des énumérations à l'aide de classes et de constantes statiques. Par exemple, la classe PrintJob de l'API de Flash Player utilise une énumération nommée PrintJobOrientation pour enregistrer les ensembles de valeurs des modes "landscape" et "portrait", comme le montre le code ci-dessous :
public final class PrintJobOrientation
{
public static const LANDSCAPE:String = "landscape";
public static const PORTRAIT:String = "portrait";
}
Par convention, une classe d'énumération est déclarée avec l'attribut final, car il n'est pas nécessaire d'étendre cette classe. Cette classe étant composée uniquement de membres statiques, il n'est pas possible d'en créer des instances. En effet, les valeurs de l'énumération sont accédées directement via l'objet classe, comme le montre l'extrait de code suivant :
var pj:PrintJob = new PrintJob();
if(pj.start())
{
if (pj.orientation == PrintJobOrientation.PORTRAIT)
{
...
}
...
}
Toutes les classes d'énumération de l'API de Flash Player contiennent uniquement des variables de type String, int ou uint. L'avantage de l'utilisation d'énumérations au lieu de chaînes littérales ou de nombres est que les fautes de frappe sont plus faciles à détecter avec les énumérations. Si vous faites une erreur dans le nom d'une énumération, le compilateur ActionScript génère une erreur. Si vous utilisez des valeurs littérales, le compilateur acceptera un nom mal épelé ou un chiffre erroné. Dans l'exemple ci-dessus, le compilateur génère une erreur si le nom de la constante d'énumération est incorrect, comme dans l'extrait suivant :
if (pj.orientation == PrintJobOrientation.PORTRAI) // erreur de compilation.
Toutefois, le compilateur ne génère pas d'erreur si vous faites une faute de frappe dans le nom d'une chaîne littérale :
if (pj.orientation == "portrai") // pas d'erreur de compilation.
Une autre technique de création d'énumérations consiste à créer une classe séparée avec des propriétés statiques pour l'énumération. Toutefois, cette technique est différente dans la mesure où chacune des propriétés statiques contient une instance de la classe au lieu d'une valeur chaîne ou d'un entier. Par exemple, le code suivant crée une classe d'énumération pour les jours de la semaine :
public final class Day
{
public static const MONDAY:Day = new Day();
public static const TUESDAY:Day = new Day();
public static const WEDNESDAY:Day = new Day();
public static const THURSDAY:Day = new Day();
public static const FRIDAY:Day = new Day();
public static const SATURDAY:Day = new Day();
public static const SUNDAY:Day = new Day();
}
Cette technique n'est pas utilisée par l'API de Flash Player, mais de nombreux développeurs préfèrent le meilleur type de vérification qu'elle autorise. Par exemple, une méthode qui renvoie une valeur d'énumération peut restreindre la valeur renvoyée au type de données de l'énumération. Le code suivant illustre non seulement une fonction qui renvoie un jour de la semaine, mais aussi un appel de fonction qui utilise le type énumération comme annotation de type :
function getDay():Day
{
var date:Date = new Date();
var retDay:Day;
switch (date.day)
{
case 0:
retDay = Day.MONDAY;
break;
case 1:
retDay = Day.TUESDAY;
break;
case 2:
retDay = Day.WEDNESDAY;
break;
case 3:
retDay = Day.THURSDAY;
break;
case 4:
retDay = Day.FRIDAY;
break;
case 5:
retDay = Day.SATURDAY;
break;
case 6:
retDay = Day.SUNDAY;
break;
}
return retDay;
}
var dayOfWeek:Day = getDay();
Il est possible d'améliorer la classe Day afin qu'elle associe un entier à chaque jour de la semaine, et comporte une méthode toString() renvoyant une représentation du jour sous forme de chaîne. Il est conseillé de créer cette amélioration comme exercice.
Flash CS3
M'envoyer un message électronique lorsque des commentaires sont ajoutés à cette page | Rapport de commentaire
Page en cours: http://livedocs.adobe.com/flash/9.0_fr/main/00000065.html