Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/04/2010, à 23:54

rwikus090

choix de conception pour implémenter en java et classe abstraite

Bonjour
j'aimerai avoir votre avis et votre conseil sur mes choix de conceptions d'un jeux que je compte implémenter en java
sa concerne la classe joueur:

en faite tous dépend du mode que choisit le joueur sois il joue contre l'ordinateur
sois il joue contre un autre joueur humain.

j'ai pensé a créer une classe joueurHumain et une autre classe abstraite joueurMachine qui aura comme classe fille "joueurStupide" et "joueurExperimente", tous dépendra du niveau que choisira le joueur principal.

j'ai décidé de faire comme sa parce-que au tout début j'avais fait une seul classe "joueur"

qui avait comme classe fille "joueurhumain" "joueurexperimente" et "joueurstupide"

mais comme la classe "joueur" est abstraite il y'a une méthode abstraite "jouer" qui a un seul paramètre pour les joueurMahcine (stupide et experimente) mais qui aura besoin de 3 paramètres pour le joueur humain ,comme les joueurmachine n'ont pas besoin des deux autre paramètres dont le joueurhumain a besoin j'ai décidé de séparé le joueurhumain des autre joueurmachine et de créer une classe abstraite joueurmachine

qu'en pensez vous et que me conseillez vous

merci de bien vouloir m'aider

Hors ligne

#2 Le 11/04/2010, à 16:49

mrlem

Re : choix de conception pour implémenter en java et classe abstraite

Si j'ai bien compris, tu as maintenant une modélisation qui donne :

Joueur
 |
 +-> Joueur humain
 |
 +-> Joueur machine
      |
      +-> Joueur stupide
      |
      +-> Joueur expérimenté

Comme ça, je dirais qu'il est de toute façon judicieux de distinguer joueur humain de joueur "machine" : en effet, pour l'instant, tu planifies un joueur machine "stupide" et un joueur machine "expérimenté", mais dans le futur tu auras peut-être envie d'en implémenter d'autres (que ce soit des niveaux intermédiaires, ou pour tester divers types d'IA). Au fur et à mesure de tes développements, tu te rendras peut-être compte que tu implémentes tes joueurs "machine" en utilisant la même structure de code, ou bien avec des morceaux de code très semblables. Tu pourrais alors factoriser du code entre tes différentes implémentations, et dans ce cas, hériter d'une même classe abstraite pourrait être un moyen de bénéficier de code factorisé ou bien d'une structure factorisée.

Donc pour faire court : oui, ça me paraît judicieux de faire cette distinction tongue
Après c'est dur d'en dire plus sans connaître le contexte.

Ah oui, sinon, ta méthode "jouer" me paraît bizarre : en effet, si elle n'a pas la même signature suivant que le joueur soit humain ou machine, j'aurais tendance à dire qu'il y a quelque part une faiblesse dans ta modélisation. Parce-que si le code qui appelle Joueur.jouer() doit savoir à quel type de joueur il a affaire, où est l'intérêt de cette abstraction ?

Hors ligne