Forums Développement Multimédia

Aller au contenu

- - - - -

objet et poo

as3 poo

3 réponses à ce sujet

#1 pcxpert

    Ceinture Orange

  • Members
  • PipPipPip
  • 32 messages

Posté 16 November 2014 - 00:50 AM

Bonsoir, après quelque mois et beaucoup d'huile de coude j'ai finalement compris le principe des classes en poo et j'aimerais dire un grand merci a l’auteur du tuto sur mediabox (même si il n'est pas facile a suivre avec tous les changements dans les classes sans fichier source)

Bref j'aimerais savoir concernant les objets si par exemple je dois crée 150 objet dois-je vraiment crée 150 class objet qui va extends ma class objet? merci d'avance

#2 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 7010 messages

Posté 16 November 2014 - 09:54 AM

Salut,

Citation

si par exemple je dois crée 150 objet dois-je vraiment crée 150 class objet qui va extends ma class objet?

Non, oui, ta question n'est pas assez précise...
150 objets de types différents ?
Pourquoi étendre la classe "Object" ?

Si je veux créer 150 personnages par exemple, je vais créer une seule classe "Personnage", cette classe va intégrer différents "attributs" comme la couleur, la taille, le poids, ... bref tout ce qui peut représenter un personnage classique. Si je veux créer 150 personnages du même type (par exemple humains) je n'ai qu'à créer une seule classe "Personnage" et l'instancier 150 fois par une boucle par exemple, il me suffit de faire varier les attributs pour chaque instance de la classe. L'exemple le plus parlant pour ce type de manip c'est les effets de particules : http://forums.mediab...iche_particules

Si maintenant tu veux créer 150 personnages, mais que tu as des races différentes ayant des caractéristiques différentes, comme par exemple des "humains" et des "chats", ce sont tous deux des types de personnages, mais ayant des "attributs" différents, par exemple l'humain à deux jambes et le chat quatre pattes, et des "méthodes" différentes, l'humain et le chat mangent et boivent tous les deux mais l'humain parle et le chat miaule, tu as là deux méthodes bien différentes, tu peux alors créer une classe principale "Personnages", cette classe va décrire les attibuts et méthodes communes à tous les personnages (Attributs : âge, poids, taille, couleur,... Méthodes : manger, boire, dormir, ... ). De cette classe dite "mère" tu va créer deux classes "filles" qui hériterons de la classe mère, c'est à dire qu'elles étendent la classe mère pour lui ajouter des méthodes et attributs spécifiques au type d'objet que tu veux créer. On aura donc par exemple :

Une classe mère "Personnage" :
- attributs : taille, poids, couleur, âge
- méthodes : manger, boire, dormir

Une classe fille "Humain" qui étend "Personnage" :
- attributs : jambes, bras
- methodes : parler

Une classe fille "Chat" qui étend "Personnage" :
- attributs : pattes, fourrure
- méthodes : miauler, griffer

Les deux classes filles étendent la classe mère "Personnage", elle héritent donc de toutes les méthodes et attributs de la classe "Personnage".

Un humain sera donc décrit de la manière suivante :
- attributs : taille, poids, couleur, âge, jambes, bras
- methodes : manger, boire, dormir, parler

et un chat :
- attributs : taille, poids, couleur, âge, pattes, fourrure
- méthodes : manger, boire, dormir, miauler, griffer

L'héritage va donc te permettre de simplifier au maximum la création de tes objets en seulement quelques classes, il faut par contre bien réfléchir au modèles que tu veux mettre en place pour être le plus efficace possible.

Le seul cas où tu devrait créer 150 classes (une par objet), serait que tes 150 objets soient totalement différents, dans ce cas ils n'hériteraient pas forcément de la classe "object", mais peuvent hériter de tout un tas d'autres classes (MovieClip, Sprite, Array, ....), selon le type d'objet que tu veux créer.

Pour résumer, une classe est un "moule" qui te permet de créer autant d'objets que tu veux à partir d'une même représentation (la classe), un peu comme une usine à création d'objets, tu en as un bon paquet déjà disponibles au travers de l'AS3, comme Array, MovieClip, Sprite, .... ce sont des classes dites natives, mais des classes quand même, et tu peux les utiliser pour créer des classes filles qui les étendent (par exemple la classe "Personnage" pourrait hériter de "Sprite" afin de l'afficher à l'écran car un Sprite est un DisplayObject que l'on peut afficher), et on peut personnaliser une classe notament grâce à l'héritage (dans notre cas la classe "Personnage" étend la classe "Sprite" et hérite de tous ses attributs et méthodes, et ajoute de nouveaux attributs et méthodes propres à la classe).

Bon courage.

#3 pcxpert

    Ceinture Orange

  • Members
  • PipPipPip
  • 32 messages

Posté 16 November 2014 - 22:00 PM

Merci Monsieur Spi pour cette explication détaillé. Déjà je commence à y voir encore plus clair et à comprendre l'erreur que je m’apprêtais à faire et désoler du manque d'information donner.

Ce que j’essaie de faire est un magasin virtuel. Ma première idée était d'utiliser "type" pour trouver à qu'elle catégorie l'item appartient (d’où le fait de vouloir 150 objet qui extends une seul classe)
item:Object = {
"nom":"pantalon 1",
"num":1,
"description":"bla bla bla",
"icon":"nom.jpg"
"prix":"10$"
"type":"pantalon"
}
Mais maintenant je comprend que je dois diviser les items selon leurs type:

Une classe mère "Item" :
- attributs : pantalon, t-shirt, bague, soulier
- méthodes : ?????

Une classe fille "pantalon" qui étend "item" :
- attributs : nom, num, description, icon, prix
- methodes : ???????

Une classe fille "t-shirt" qui étend "item" :
- attributs : nom, num, description, icon, prix
- méthodes : ???????

etc ...

J'ai beau me poser la question que font les pantalons,les souliers etc mais je ne trouve rien :( ou peut-être bien que ce serrais acheter et vendre pour mon exemple? ou bien les différents type de pantalon?

Il y a aussi quelque chose d'autre qui me tracasse par rapport au main car je dois crée des instances etc cela implique d'avoir beaucoup de code dans le main alors y a t'il une façon d’alléger le main (si ce n'est pas trop compliqué bien sure car je préfère de loin avoir un code compréhensible et long qu'a un code optimiser et incompréhensible pour mon niveau). merci

#4 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 7010 messages

Posté 16 November 2014 - 22:19 PM

Quand on se pose des questions sur la conception de modèles connus en POO, ici un magasin, ou une fabrique, il faut se tourner vers les Design Pattern, ou Patrons de conception.

Voici une explication sur les Design Pattern : http://jormes.develo...n-construction/

Dans ton cas il me semble que le pattern Abstract Factory répond à ton problème, à vérifier.

Image attachée: image1.jpg

Dans le détail : http://fr.wikipedia....rique_abstraite

Pour travailler sur ta structure logique et les patterns tu peux utiliser un éditeur UML : http://fr.wikipedia....informatique%29

Voici un tuto pour apprendre vite fait à s'en servir : http://www.commentca...roduction-a-uml

Bon courage.




Répondre à ce sujet



  

1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP