Problème de tPers[i].getClass().getName()

Résolu/Fermé
estrellas6 Messages postés 36 Date d'inscription vendredi 26 juillet 2013 Statut Membre Dernière intervention 7 mars 2014 - 4 août 2013 à 14:19
estrellas6 Messages postés 36 Date d'inscription vendredi 26 juillet 2013 Statut Membre Dernière intervention 7 mars 2014 - 5 août 2013 à 12:04
Bonjour,

Voila, dans le tutoriel de site du zéro sur java et dans la partie "Pattern Strategy" voici ce code :

package com.sdz.test;

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
Personnage[] tPers = {new Guerrier(), new Chirurgien(), new Civil(), new Sniper(), new Medecin()};
String[] tArmes = {"pistolet", "pistolet", "couteau", "fusil à pompe", "couteau"};
for(int i = 0; i < tPers.length; i++){
System.out.println("\nInstance de " + tPers[i].getClass().getName());
System.out.println("*****************************************");
tPers[i].combattre();
tPers[i].setArmes(tArmes[i]);
tPers[i].combattre();
tPers[i].seDeplacer();
tPers[i].soigner();
}
}

1- le "tPers[i].getClass().getName()" ne fonctionne pas bien parce que normalement il me donne "Instance de Guerrier" [par exemple] mais dans mon cas il m'affiche "Instance de com.sdz.test.Guerrier"[comme si j'ai pas le getName()], d'après vous c'est quoi ce problème???

2- dans ce code j'ai pas compris pour quoi il a appelé la méthode combattre() deux fois

tPers[i].combattre();
tPers[i].setArmes(tArmes[i]);
tPers[i].combattre();

une fois avant "tPers[i].setArmes(tArmes[i]);" et une autre fois après ???????

Merci à vous

A voir également:

2 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
4 août 2013 à 16:35
1) remplace getName (com.sdz.test.Guerrier) par getSimpleName (Guerrier)

2) ce n'est qu'un exemple, ici en modifiant l'arme avec ton setArme, la méthode combattre ne va pas faire la même chose.
0
estrellas6 Messages postés 36 Date d'inscription vendredi 26 juillet 2013 Statut Membre Dernière intervention 7 mars 2014
4 août 2013 à 18:00
Merci KX,

1-Pour getSimpleName() ça a bien fonctionné pourtant dans le tutoriel il a met juste getName().

2-oui je sais mais je parle du programme, qu'elle est l'utilité d'appeler la mm méthode deux fois sachant qui si on enlève l'une des deux on aura le même résultat dans les deux cas.
si on applique juste combattre () on aura "Attaque au couteau"
et quand on applique setArme() on aura "Attaque au pistolet"
mon problème c que je ne vois pas pour quoi dans ce programme a utilisé combattre () deux fois ?
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
4 août 2013 à 18:13
Pour montrer qu'avec la même méthode "combattre", celle-ci s'est adaptée à l'arme choisie, en passant de "couteau" à "pistolet"...
0
estrellas6 Messages postés 36 Date d'inscription vendredi 26 juillet 2013 Statut Membre Dernière intervention 7 mars 2014
5 août 2013 à 12:04
ok merci beaucoup KX :)
0