#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
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