Créer son site Gratuitement : Service / Outils webmaster gratuit
Mon Site Gratuit
Contactez nous
Nos partenaires
Scripts
Tutoriaux
Nos services
Forums
Accueil
ForumsCS3 | AS3 : Packages et classes : L'objet visuel 1
      Imprimer le sujet FAQ  M'enregistrer 
  Grâce aux fichier Flash, votre site devient 100% interactif !
Des cours pour savoir gérer les ActionsScripts, les interpolations ...ect ...

CS3 | AS3 : Packages et classes : L'objet visuel 1

Messagede zardoz le 07 Nov 2008, 04:04

Vous trouverez ici la première partie concernant la programmation d'objet.
Ce topic prépare les débutants et les débutantes sur la programmation de modules visuelles.
Celui-ci n'a de but que de promouvoir l'écriture de classes en Flash, pour un développement
durable de vos projets personnelles. Celui-çi est 100% prog. Tant visuel que bebel.

Image

Pour cette horloge virtuelle, vous avez trois classes qui drive le module.
Les apparences et les fonctionnalités sont séparer pour un meilleur confort d'utilisation.
Les classes et les packages vous permettrons l'organisation de vos projets.

Le rôle des packages et des classes en programmation Flash AS3


Les packages et les classes jouerons un rôle considérables en programmation. Quoique les packages ne sont pas obligatoire, ceux-ci vous permettrons de parfaire l'organisation et l'utilisation de vos classes et, par le fait même de tous vos projets personnelles. Une chose propre aux packages sera d'éliminer les conflits entrent les déclarations de vos variables, vos constantes et vos méthodes.

Les packages seront toujours un chemin, un path. Il s'agit en effet de la structuration en paquet très fréquenter en informatique. Il se compare aux namespaces. Tous les langages évoluent autour des packages, car sa puissance sera toujours l'organisation et la planification de vos écrits en matière de développement. L'utilisation et le développement de vos packages permet plus aisément un style d'écriture. En effet puisque vous pourrez utiliser des noms de variables, de constantes ou de méthodes identique d'une classe à l'autre. Jamais vos membres de classes ne seront conflictuelles. C'est la puissance même des namespaces qui autorisent une si grande liberté. Le seul fait d'utiliser les packages và donc vous permettre de maximiser la déclaration de vos membres, voire même répéter plusieurs fois un nom de variable sans que celui-ci n'entrent en conflit avec une autre variable portant le même nom, mais issus d'une autre classe. Ces classes pourront se partager, sur le même terrain, le développement d'un seul de vos projets. Par le fait même vous pouvez développer un style d'écriture facilement mémorisable. Par contre retenez que la valeur des packages résident dans la structuration de vos classes. Vous serez donc appeller à disséquer vos idées/objets et les reformuler sous cette forme nommé packages et classes.

Voici un exemple de package :

package icom.design
{
---->
----> Importation des packages et classes prédéfinis de flash
----> et/ou importation des packages et classes personnalisés.
---->
}

La déclaration de package ne concerne que le chemin relatif. Tel que décrit plus haut : package icom.design. Il s'agit en fait de deux répertoires imbriquer l'un dans l'autre. Le répertoire icom contient le répertoire design. Le package tel que définit ne concerne pas vos classes, ce n'est qu'au niveau des importations que vos classes seront cibler. Par le fait même vous placer vos classes dans le répertoire design. Remarquez ici que vos packages sont en minuscule. Vos classes cependant devront être en majuscule à la première lettre : Exemple import icom.design.InitDesign; . Ce principe est facultatif mais recommandé. C'est toujours une question de lisibilité de votre écriture. Il en est de même lorsque vous écrirez vos classes, ceux-ci commencerons par une lettre Majuscule. Exemple public class InitDesign { .. développements .. }. Nous en reparlerons plus loin.

Voci encore un exemple : d'importation de packages et de classes.

package icom.design
{
---->
----> Prédéfini
---->
----> import flash.display.Sprite;
----> import flash.events.Event;
---->
----> Personnalisé
---->
----> import icom.design.FonctionDesign;
----> import icom.design.VisuelDesign;
---->
}

Vous pourrez à tout moment cibler la totalité de vos classes en utilisant cette écriture : Exemple import icom.design.*;. Par contre cette façon de faire n'est pas recommander pour tout ceux et celles qui prévoient développer en team. Celà est dû au fait que ce genre d'importation n'est pas lisible. Prenez conscience ici que les membres qui partagerons vos développement devrons sans aucun doute ouvrir vos packages pour connaitre les classes. Mais la raison première est que ce genre particulier importe la totalité des classes présent dans votre package, même si vous n'avez besoin que d'une ou deux classes. Donc nous nous éloignons du concept d'optimisation essentielle de produit diffusé en ligne. N'oubliez pas que le Player Flash aura pour tâche d'importer la totalité des classes cibler.


Il est donc recommandé de l'écrire ainsi :

import icom.design.InitDesign; .
import icom.design.ModelDesign; .

Sauf exception : ignorer ce modèle d'écriture :

import icom.design.*;

Avec le descriptif complet des classes cibler vous provoquer la lisibilté et favoriser l'optimisation de votre projet.

Pensé l'objet : Le déconstruire et le reconstruire : Une écriture modulaire.


Donc comme première approche nous pensons les packages comme une structuration, une organisation des classes. Ceux-ci ne sont pas structurer pour le développement d'un seul projet mais rend accessible la structuration des classes. Ces classes serviront à autant de projets que vous le désirer. Nous considérons le package comme une enveloppe. C'est à l'intérieur de cette enveloppe que nous développons nos classes. Ces classes, une fois cibler selon nos besoins, nous permettrons le développement de tous nos projets, qu'ils soient issus d'un geste intuitif, ou longuement réfléchis.

Voci un package avec la déclaration de classe :

package icom.design
{
---->
----> import flash.display.Sprite;
----> import flash.events.Event;
---->
----> import icom.design.FonctionDesign;
----> import icom.design.VisuelDesign;
---->
----> Déclaration de la classe
---->
----> public class PositionDesign extends Sprite
----> {
---->
----> ----> Membres de classe
---->
----> }
}

Les classes : Définition des membres.


Comme vous pouvez vous en rendre compte, le développement de vos classes se font à l'intérieur de l'enveloppe packaging. D'ailleur une erreur sera levé si vous compiler une classe à l'extérieur d'un package. Pour tout dire vous n'avez que deux choix lorsque vous développer des classes. Soit qu'aucun package n'est défini, soit qu'un package soit défini. Si donc vous opter pour la déclaration d'un package, celui-ci devra porter la totalité du développement de la classe.

La déclaration des membres de classe est une partie importante lors du développement de vos projets de classes. C'est cette partie qui contient les variables et les constantes. C'est aussi à cette endroit que vous décider si vos membres sont public : private ou protected. Si vous êtes débutant en développement de classes, commencé avec la valeur par défaut : public. Celui-ci rend les membres de classe accessible de n'importe où dans la classe ou à l'extérieur même de la classe. Ce n'est que l'expérience qui vous montrera comment choisir l'accessibilité et pourquoi. Ce n'est pas le but du topic, que de définir les raisons profonde qui motivent nos choix d'accès et de protection. Retenez simplement que ces clés d'accès ont véritablement leur raison d'être. Certain membres de classe, dans un contexte précis, exigeront d'être protéger. Par contre ces même membres pourront être déclarer public dans un autre contexte. Vous le saurez en temps utile.

Voici un exemple de déclaration de membres de classe :

package icom.design
{
---->
----> import flash.display.Sprite;
----> import flash.events.Event;
---->
----> import icom.design.FonctionDesign;
----> import icom.design.VisuelDesign;
---->
----> public class PositionDesign extends Sprite
----> {
---->
----> ----> Membres de classe
---->
----> ----> private var posx:Number;
----> ----> private var posy:Number;
----> ----> private var largeur:Number;
----> ----> private var hauteur:Number;
----> ----> private var couleur:uint;
----> ----> private var transparence:int;
---->
----> ----> public var cibles:Array;
---->
----> ----> public static const MILLISECONDES_PAR_MINUTE:Number = 1000 * 60;
----> }
}

Les membres de classe se partagent les valeurs associées. C'est au travers les méthodes de la classe que ceux-ci seront les plus utiles. Comme vous pouvez vous en rendre compte, la déclaration des membres impose que ceux-ci soit typer. Exemple : public var chargement:Boolean;. Le typage des membres de classe est important ici. Comprenez aussi que tous les membres n'auront pas à être déclarer à ce niveau du développement. En effet, puisque certaines variables n'auront d'utilité qu'à l'intérieur d'une seule méthode. La valeur de ces variables n'auront pas à être partager par différentes méthodes. Ce sera donc à vous de déterminer si une variable doit être déclarer au niveau des membres de la classe, ou à l'intérieur d'une seule méthode. C'est souvent le cas des boucles for et de la variable ' i '. Voici un exemple d'une variable déclarer à partir d'une méthode :

public function initHorlogeDesign ( .. Vos paramètres .. ):void
{
----> var i:int;
----> var nombreElements:int = 59;
----> for (i = 0; i < nombreElements; i++)
----> {
----> ----> Instructions
----> }

}

Comme vous le constater les keywords d'accès ne sont pas déclarer, ce qui est normal car c'est la méthode qui porte la clé d'accès.
Ce genre d'écriture est fréquent en programmation. En générale nous possédons ainsi pour des variables qui n'auront pas à partager leurs valeurs avec d'autres parties du script. Celles-ci n'auront pas à témoigner leur globalité. Elles n'auront d'utilité qu'à l'intérieur de la méthode qui les définis.

Par la suite viendra le constructeur par défaut. Le constructeur en Flash est semblable aux constructeurs en Java ou CSharpe. Celui-ci porte le même nom que la classe. Le contructeur par défaut est facultatif. Cependant je vous le recommande au début de votre apprentissage.

Voici un exemple de déclaration du constructeur par défaut :

package icom.design
{
---->
----> import flash.display.Sprite;
----> import flash.events.Event;
---->
----> import icom.design.FonctionDesign;
----> import icom.design.VisuelDesign;
---->
----> public class PositionDesign extends Sprite
----> {
---->
----> ----> private var posx:Number;
----> ----> private var posy:Number;
----> ----> private var largeur:Number;
----> ----> private var hauteur:Number;
----> ----> private var couleur:uint;
----> ----> private var transparence:int;
---->
----> ----> public function PositionDesign( )
----> ----> {
----> ----> ----> Constructeur par défaut
----> ----> }
----> }
}

Plusieurs développeurs utiliserons le constructeur pour l'instanciation. Moi personnellement ce n'est pas mon genre. La plupart des programmeurs utilisant le constructeur écrivent des classes qui génère des résultats visuelles. Évitez ce genre de pratique. Mais seulement si vous le désirer. Pour ma part je préfère de beaucoup le .fla pour instancier les classes à partir d'objets. Je n'utilise les classes que comme un modèle, conteneur de données. C'est pourquoi nous allons écrire des méthodes paramètrables. Ces méthodes seront appeller à partir d'objet instanciant les classes à partir du fichier .fla.


Comme vous pouvez le voir le constructeur est déclaré à l'intérieur de la définition de la classe. Il en sera de même de toutes les méthodes, que celles-ci soient public, private ou protected.

Voici la déclaration d'une méthode :

package icom.design
{
---->
----> import flash.display.Sprite;
----> import flash.events.Event;
---->
----> import icom.design.FonctionDesign;
----> import icom.design.VisuelDesign;
---->
----> public class PositionDesign extends Sprite
----> {
---->
----> ----> private var posx:Number;
----> ----> private var posy:Number;
----> ----> private var largeur:Number;
----> ----> private var hauteur:Number;
----> ----> private var couleur:uint;
----> ----> private var transparence:int;
---->
----> ----> public function PositionDesign( )
----> ----> {
----> ----> ----> Constructeur par défaut
----> ----> }
---->
----> ----> Méthodes public
---->
----> ----> public function initPosition ( ) : void
----> ----> {
----> ----> ----> Instructions et développements
----> ----> }
----> }
}

Comme vous devez vous en rendre compte le nom de la méthode public commence par une minuscule. Encore une fois, cette façon de faire est un principe de base fortement suggérer. Par contre sentez vous libre d'écrire comme bon vous semble, sauf si vous débuter en programmation de classes avec Flash CS3 | AS3. Ce comportement vous aideras sur une période de temps à mieux saisir la structure de la classe.

Vous avez reçu ici les bases logiques d'une écriture de classe et de package. Dans le prochain tutoriel nous nous attarderons davantage sur le rapport entre le constructeur par défaut, et les méthodes de classes. Comme le dit si bien Imbert Thibeault, ingénieur système chez Adobe France, une méthode est une simple fonction qui évolue dans le contexte d'un objet. C'est ce que nous étudirons dans la deuxième partie. Par le fait même nous parlerons particulièrement des méthodes paramètrables. Nous penserons aussi au besoin de déterminer, en programmation, la séparation des éléments visuels des données axés sur les fonctionnalités des modules. Prenez exemple d'une horloge virtuelle : Le design, sa représentation visuelle en quelque sorte, n'a rien à voir avec la mécanique de ses fonctionnalités. Ce n'est pas la beauté esthétique d'une horloge qui fait tourner ses aiguilles. Par le fait même, en programmation comme en développement de projet, vous serez appeller à disséquer vos idées en séquences logiques. Ce n'est que le début du concept de la modularisation mise en pratique. Déconstruire vos idées : Reconstruire vos idées : Sous un concept modulaire.

Ce n'est qu'à la troisième partie que nous regarderons de plus près le projet, déjà écrit : Horloge Virtuelle. Vous en avez un visuel ici en Top Page.

Amicalement : zardoz ;-) : ++
Dernière édition par zardoz le 22 Nov 2008, 21:11, édité 7 fois.
zardoz
Plug'zien Star'z
Plug'zien Star'z
 
Messages: 888
Inscription: 16 Fév 2008, 04:05
Points: 582


Re: CS3 AS3 : Packages et classes : Vers l'objet visuel 1

Messagede TaaZ le 08 Nov 2008, 13:03

Je n'ai pas lu le tuto dans son intégralité, autant que je n'utilise pas flash !
Mais superbe tuto qui j'espère serviras à beaucoup de monde.
TaaZ
 
Points:


Re: CS3 | AS3 : Packages et classes : L'objet visuel 1

Messagede Vincento le 13 Nov 2008, 07:56

Personnelement j'ai fait un an de flash mais nous n'avons pas encore vu AS3 mais seulement AS1/2.

Mas cette année normalement, cela devrait changer.
.:: Rock saves the Queen ::.
Avatar de l'utilisateur
Vincento
Nouveau Plug'zien
Nouveau Plug'zien
 
Messages: 13
Inscription: 22 Oct 2008, 16:18
Localisation: Blois
Points: 3



Retourner vers Flash

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités