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

Résolu
estrellas6 Messages postés 36 Date d'inscription   Statut Membre Dernière intervention   -  
estrellas6 Messages postés 36 Date d'inscription   Statut Membre Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention  
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention  
 
ok merci beaucoup KX :)
0