IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > Actionscript 2 > Programmation Orientée Objets
        Quelle est la syntaxe d'une classe ?
        Mon attribut de classe a pour toute instance la valeur de la dernière instance, pourquoi ?



Quelle est la syntaxe d'une classe ?
auteur : Grégory Dumas
Importation des classes :

import SimpleClasseImportee; // Importe la classe "SimpleClasseImportee" située au même niveau que l'animation
import repertoireLibrary.ClasseImportee;  // Importe la classe "ClasseImportee" située dans le répertoire "repertoireLibrary"
...
Déclaration de la classe :

class NomDeLaClasse { // Si la classe se trouve au  même niveau que l'animation
ou
class repertoireLibrary.NomDeLaClasse { // Si la classe est située dans le répertoire "repertoireLibrary" 
ou
class NomDeLaClasse extends repertoireLibrary.NomDeLaClasseHeritee { // si la classe hérite de la classe "NomDeLaClasseHeritee"
Déclaration de la classe :

var sVar1:String:
var nVar2:Number;
var ...;
Contructeur

public NomDeLaClasse (nArg1:Number, sArg2:String, ...) {
    ...
}
Fonctions avec retour

public function nomDeLaFonction (...):TypeDeRetour { // TypeDeRetour est le type (String, Number ...) de la valeur renvoyée. 
    ...
    return ...;
}
Fonctions sans retour

public function nomDeLaFonction (...):Void { 
    ...
}
ou 
public function nomDeLaFonction (...) { 
    ...
}
Fermeture de la classe

}
lien : Création de classes personnalisées
lien : Créer un composant

Mon attribut de classe a pour toute instance la valeur de la dernière instance, pourquoi ?
auteur : Demco
Cela vient probablement d'un problème d'allocation de la mémoire. Cette erreur peut se produire dans la plupart des langages orientés objet.
Il ne faut pas allouer l'espace mémoire directement à la déclaration de l'attribut en question.

Class MaClasse{
    private var _tab:Array = new Array();

    //constructeur
    function MaClasse(){
    }
         
    public function setTabl(tab:Array):Void{
       _tab = tab;
    }
}
Dans cet exemple _tab aura toujours la valeur de la dernière instance, peu importe l'instance.

Une solution est donc d'allouer l'espace mémoire dans le constructeur :

class MaClasse{
    private var _tab:Array;

    //constructeur
    function MaClasse(){
        _tab = new Array();
    }

    public function setTabl(tab:Array):Void{
        _tab = tab;
    }
}
Dans cette seconde classe, l'attribut _tab aura une valeur unique pour chaque instance.



Consultez les autres F.A.Q's


Valid XHTML 1.0 TransitionalValid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2003-2006 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.