Classes AS3 | public var ou get et set

Résolu
Orange73
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011
- 10 avril 2009 à 10:42
Orange73
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011
- 10 avril 2009 à 18:17
Hello,

Juste une petite question :

Imaginons une classe AS3.

Vaut-il mieux utiliser des functions public get et set pour recuperer ou modifier des variables OU simplement declarer des var en public ?

Exemple function get et set :

public function get hello():void{
     return maVar;
}

public function set hello(pVal):void{
     maVar = pVal;
}

-------------

Exemple public var :

public var maVar:String = "hello";

Dans les 2 cas je peux y acceder et modifier en faisant cela dans mon fla:
maClassInstance.hello; // affiche valeur de maVal

maClassInstance.hello = hello; // nouvelle valeur de maVal : "hello"

Qu'en pensez-vous ?

-- Orange73 --
"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)

4 réponses

cs_bali_balo
Messages postés
1378
Date d'inscription
samedi 9 octobre 2004
Statut
Membre
Dernière intervention
1 novembre 2010
1
10 avril 2009 à 11:10
Salut,
La seule différence c'est qu'avec les fonctions get set et tu peux réaliser un traitement avant de retourner ou de modifier les propriétés publics.
Mais sinon il n'y a pas réellement de différence au niveau "conception" car les deux syntaxes permettent un accès public.

Illustration :
prenons un jeu de carte de poker. Tu as la propriété couleur (de type Number) de la classe CartePoker qui hérite de MovieClip. Si tu faisais seulement maCarte.couleur = 0; (0=PIC,1=COEUR,etc.), est-ce que cela va pour autant changer la couleur de ta carte ? Non car il faut changer l'état du clip qui représente la couleur de la carte (un clip à créer ou simplement un gotoAndStop()). D'où l'intéret de fonction "get" et "set". C'est ce qu'on appelle l'encapsulation (du moins avec des propriétés déclarées en private si je ne me trompe pas )

bali_balo....=]
3
cs_bali_balo
Messages postés
1378
Date d'inscription
samedi 9 octobre 2004
Statut
Membre
Dernière intervention
1 novembre 2010
1
10 avril 2009 à 11:13
Et pour finir ActionScript permet tout simplement d'éviter les appels de fonctions comme en Java : maCarte.getCouleur(), etc. Moi personnellement je l'ai très rarement utilisé voire jamais. C'est plus parlant pour moi de faire ".getCouleur()" que ".couleur" : je sais au moins que j'ai à faire à une méthode et non à un accès direct de propriété.

bali_balo....=]
3
Orange73
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

10 avril 2009 à 10:44
Correction :

dans le 2e cas on y accede via :
maClassInstance.maVar;
maClassInstance.maVar = "hello";

-- Orange73 --
"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
Orange73
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

10 avril 2009 à 18:17
Merci bali_balo pour tes réponses.

C'est ce qu'il me semblai aussi.

Moi aussi je prefere utiliser les methodes de ce type .getCouleur() car plus facile de s'y retrouver dans le codage.

A+

-- Orange73 --
"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0