Bonjour, Veuillez trouver ci-dessous la réponse à une question qui me semble devoir intéresser tout le monde ... At 25/05/2008 21:24, one student wrote: Bonjour, Dans le cadre de l'exercice 7.47 visant à intégrer la conception de zuul-even-better, je me heurte à un problème : je ne vois pas comment combiner l'abstract command avec les enums CommandWords. Pour moi si chaque commande a sa classe, l'enum ne sert plus. Ai-je raison ? Si oui, supprime-t-on la conception des enums ? Si non, pourquoi, et comment combiner les 2 ? Cordialement, Excellente question ! D'abord d'un point de vue général, il est bon de poser ce genre de question pluttt que de faire n'importe quoi; vous avez également pu constater que souvent dans les exercices précédents, une nouvelle version de Zuul vous était donnée comme exemple de mise en oeuvre d'un point particulier, mais qu'elle ne reprenait pas toutes les améliorations qui avaient été apportées à d'autres aspects du jeu. Venons-en maintenant à l'exercice 7.47. Tout d'abord, c'est probablement un des exercices les plus difficiles de PR102. C'est également celui qui demande le plus de modifications dans le code déjà écrit. J'espère qu'en lisant le chapitre 7 vous en comprendrez tout l'intérjt. Alors, doit-on supprimer le long switch sur les commandes pour le remplacer par un simple appel de méthode (judicieusement redéfinie différemment pour chaque commande) ? OUI Donc, doit-on supprimer les enum ? NON Chaque String tapée est d'abord transformée en un CommandWord (enum), et une HashMap permet de retrouver le second à partir de la première. Ensuite, à chaque CommandWord est associée une Command qui contient la fameuse méthode à exécuter, et une HashMap permet de retrouver la seconde à partir du premier. Cette conception permet donc de séparer la mécanique du jeu (CommandWord -> Command) de son interface textuelle (String -> CommandWord) en utilisant une seule instruction : "exécute la méthode associée à la Command associée au CommandWord associé à la String tapée" Bien entendu, l'interface graphique peut court-circuiter une étape si elle fournit directement le CommandWord pluttt que la String. Bon travail. P.S.: Attention ! Zuul-even-better est écrit en java 1.4; il n'utilise donc pas le for-each mais des itérateurs, il ne précise pas les types des éléments des HashMap, etc., toutes choses que nous nous interdisons de faire en 1.6 !