Exercice très simple modélisant des amis blagueurs.

Résolu
fpat Messages postés 11 Date d'inscription mercredi 8 octobre 2008 Statut Membre Dernière intervention 20 décembre 2008 - 3 déc. 2008 à 16:54
fpat Messages postés 11 Date d'inscription mercredi 8 octobre 2008 Statut Membre Dernière intervention 20 décembre 2008 - 3 déc. 2008 à 20:44
Bonjour tout le monde, j'suis bloqué à un exercice j'suis sûr que la réponse est bête mais j'ai trop réfléchi dessus :'(
Question:
Je résume ! Je dois écrire ces classes:
Blagueur:
- attributs: String nom; (le nom du blagueur), Blagueur amis[] (Tableau de 100 amis blagueurs), String blague[] (Tableau des blagues qu'ils connaissent)
- méthodes: reaction() (le rire), presentation() (Les 2 blagueurs se présentent l'un à l'autre), ecoute() (this ecoute une blague)
PinceSansRire:
Il ne rigole a aucune blague
Idiot:
Il ne rigole pas sauf si on lui explique
BouteEnTrain:
Quand un boutenetrain se présente pour la première fois à quelqu'un il lui raconte toutes les blagues qu'il connait et quand il raconte une blague a un idiot il lui donne des explications juste après avoir raconté sa blague.

Je n'ai pas le résultat escompté :'(. Le résultat est affiché dans le main (sous forme de commentaires) de la classe TesteBlagueur.
Merci de m'avoir déjà lu et puis re-merci à ceux qui m'aident aussi
>





class Blagueur {
 String nom;
 Blagueur amis[] = new Blagueur[100];
 String blague[] = new String[100];
 
 Blagueur(String nom) {
  this.nom = nom;
 }
 
 protected void reaction() {
 System.out.println(this.nom + ": Ha Ha "); 
 }
 
 public void presentation(Blagueur b) {
 int i=0, drap=0;
 while (i < 100 && drap == 0) {
  if (this.amis[i] == b) drap=1;
  i++;
  }
  
  if (drap == 0) { //ils ne se connaissent pas
   
   i=0;
   while(this.amis[i] != null) i++;
   this.amis[i]=b; //b devient l'ami de this
   
   b.presentation(this);
  }
  
 }
 
 public void ecoute(Blagueur b, String blg) { //b raconte la blague a this
  int i=0, drap=0;
  
  while(i < 100 && drap == 0) {
   if ( this.blague[i] != null && (blg).compareTo(this.blague[i]) == 0 ) drap=1; //regardons s'il connait la blague
   i++;
  }
  
  if (drap == 0) { //this ne connait pas la blague
  
   this.reaction(); //this reagit
  
   i=0; //this memorise la blague
   while (this.blague[i] != null) i++;
   this.blague[i]=blg;
  
   i=0; //this la raconte a ses amis
   for(i=0; i<100; i++) {
    if (this.amis[i] != null) this.amis[i].ecoute(this,blg); //this raconte a ses amis
   }
  }
 }
 
}




 



class PinceSansRire extends Blagueur {
 
 
 PinceSansRire(String nom) {
  super(nom);
 }



 
 protected void reaction() {
 System.out.println(nom + " : (rien)"); 
 }
 
}





class Idiot extends Blagueur {



 
 Idiot(String nom) {
  super(nom);
 }
 
 protected void reaction() {
 System.out.println(nom + " : (rien)"); 
 }
  
 void ecouteExplication() {
  super.reaction();
 }
 
}



class BouteEnTrain extends Blagueur {
 
 
 BouteEnTrain(String nom) {
  super(nom);
 }
 
 
 public void presentation(Blagueur b) {
  int i=0,drap=0;
  while(i < 100) {
   if (this.blague[i] != null) b.ecoute(this, this.blague[i]); //this raconte a b
   i++;
  }
  super.presentation(b);



 }
 
}



public class TesteBlagueur {
 public static void main(String args[]) {
  Blagueur blagueur = new Blagueur("Riri");
  Blagueur bouteEnTrain = new BouteEnTrain("Fifi");
  Blagueur pinceSansRire = new PinceSansRire("Loulou");
  Blagueur idiot = new Idiot("Dingo");
  String histoireToto = "C'est l'histoire de Toto...";
  String histoireBlonde = "Comment fait une blonde pour ...";
  
  blagueur.presentation(bouteEnTrain);
  
  System.out.println("--1---");
  
  bouteEnTrain.ecoute(blagueur, histoireToto); //affiche: Fifi: "Ha Ha"
  
  
  System.out.println("");
  System.out.println("--2---");
  
  bouteEnTrain.presentation(pinceSansRire); //affiche: Loulou: (rien)
  
  System.out.println("");
  System.out.println("--3---");
  
  bouteEnTrain.presentation(idiot); //affiche Dingo : (rien)
  
  System.out.println("");
  System.out.println("--4---");
  
  
  idiot.presentation(blagueur);
  
  bouteEnTrain.ecoute(blagueur, histoireBlonde); //affiche Fifi : Haha, Loulou: (rien), Dingo : (rien), Dingo : Ha ha
  
  
  
 }
}



FARRUGIA Patrick

5 réponses

cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
3 déc. 2008 à 19:58
Salut,

j'ai pris ton code, fais des petites modifications :

le voici (mes commentaires sont en majuscule) :




class Blagueur {
    // Les constantes sont utiles
    final static int TAILLE = 100;
    String nom;
    Blagueur amis[] = new Blagueur[TAILLE];
    String blague[] = new String[TAILLE];

    Blagueur(String nom) {
        this.nom = nom;
    }

    protected void reaction() {
        System.out.println(this.nom + ": Ha Ha ");
    }

    public void presentation(Blagueur b) {
        int i=0, drap=0;
        while (i < TAILLE && drap == 0) {
            if (this.amis[i] == b) {
                drap = 1;
            }
            i++;
        }

        if (drap == 0) { //ils ne se connaissent pas
            i=0;
            while(this.amis[i] != null) {
                i++;
            }
            this.amis[i]=b; //b devient l'ami de this
            b.presentation(this);
        }

    }

    public void ecoute(Blagueur b, String blg) { //b raconte la blague a this
        int i=0, drap=0;
        while(i < TAILLE && drap == 0) {
            if ( this.blague[i] != null && !blg.equals(this.blague[i]) == false ) {
            //regardons s'il connait la blague
                drap=1;
            }
            i++;
        }

        if (drap == 0) { //this ne connait pas la blague
            this.reaction(); //this reagit

            i=0; //this memorise la blague
            // N'OUBLIES PAS DE TESTER SUR LA TAILLE DU TABLEAU
            while ( (this.blague[i] != null) && (i < TAILLE) ) {
                i++;
            }
            this.blague[i]=blg;

            i=0; //this la raconte a ses amis
            for(i=0; i<TAILLE; i++) {
                if (this.amis[i] != null) {
                    this.amis[i].ecoute(this, blg); //this raconte a ses amis
                }
            }
        }
    }
   
}

class PinceSansRire extends Blagueur {

    PinceSansRire(String nom) {
        super(nom);
    }
   
    protected void reaction() {
        System.out.println(nom + " : (rien)");
    }
}

class Idiot extends Blagueur {
    Idiot(String nom) {
        super(nom);
    }

    protected void reaction() {
        System.out.println(nom + " : (rien)");
    }

    void ecouteExplication() {
        super.reaction();
    }
}

class BouteEnTrain extends Blagueur {

    BouteEnTrain(String nom) {
        super(nom);
    }

    public void presentation(Blagueur b) {
        int i=0,drap=0;
        while(i < TAILLE) {
            if (this.blague[i] != null)
                b.ecoute(this, this.blague[i]); //this raconte à b
            i++;
        }
        super.presentation(b);
    }
}

class TesteBlagueur {
    public static void main(String args[]) {
        Blagueur blagueur = new Blagueur("Riri");
        Blagueur bouteEnTrain = new BouteEnTrain("Fifi");
        Blagueur pinceSansRire = new PinceSansRire("Loulou");
        Blagueur idiot = new Idiot("Dingo");
       
        String histoireToto = "C'est l'histoire de Toto...";
        String histoireBlonde = "Comment fait une blonde pour ...";

        blagueur.presentation(bouteEnTrain);

        System.out.println("--1---");
        // AFFICHAGE :
        // Fifi: "Ha Ha"
        // Riri: "Ha Ha"
        // car Fifi et Riri viennent de se présenter
        bouteEnTrain.ecoute(blagueur, histoireToto);
        System.out.println("");

       
        System.out.println("--2---");
        //affiche: Loulou: (rien)
        bouteEnTrain.presentation(pinceSansRire);
        System.out.println("");
 
       
        System.out.println("--3---");
        //affiche Dingo : (rien)
        bouteEnTrain.presentation(idiot);
        System.out.println("");

       
        System.out.println("--4---");
        // AFFICHAGE :
        // Fifi : Ha Ha
        // Riri : Ha Ha     (car blagueur ne connait pas histoireBlonde (je déteste ce clichet à propos))
        // Dingo : (rien)
        // Loulou : (rien)
        // ICI, L'IDIOT NE REAGIT PAS CAR TU N'AS PAS UTILISE SA METHODE ecouteExplication()
        idiot.presentation(blagueur);
        bouteEnTrain.ecoute(blagueur, histoireBlonde);
 }
}








_____________________

Vos avis et critiques sur le livre "Objets réactifs en java" de Frédéric Boussinot : contactez moi par MP..
1
fpat Messages postés 11 Date d'inscription mercredi 8 octobre 2008 Statut Membre Dernière intervention 20 décembre 2008
3 déc. 2008 à 20:13
merci énormément pour ta réponse, je la consulte tout de suite :). Je m'actionne.
FARRUGIA Patrick
0
fpat Messages postés 11 Date d'inscription mercredi 8 octobre 2008 Statut Membre Dernière intervention 20 décembre 2008
3 déc. 2008 à 20:24
re :)
donc euh au "première affichage" je comprends pas pourquoi Riri rigole vu qu'il connait la blague :x


et aussi le boute en train quand il raconte sa blague a un idiot il doit lui expliquer (void ecouteExplications())
si tu peux m'aider à ça. Sinon j'ai tout compris (et au passager les commentaires d'affichages dans le main c'est sensé être la réponse du prof qui est archi sur de lui [je lui ai demandé 100 fois :x] ).
Merci encore :)

FARRUGIA Patrick
0
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
3 déc. 2008 à 20:37
Re,

au "premier affichage" je ne vois pas où ça te paraît anormal ?

Riri (blageur) ne connait pas la blague : il la raconte à Fifi (BouteEnTrain), puis celui-ci lui la raconte de son tour : ta méthode ecoute() dit ça..

BouteEnTrain n'explique pas la blague à un idiot car tout simplement tu n'as pas programmé ça !


_____________________

Vos avis et critiques sur le livre "Objets réactifs en java" de Frédéric Boussinot : contactez moi par MP..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fpat Messages postés 11 Date d'inscription mercredi 8 octobre 2008 Statut Membre Dernière intervention 20 décembre 2008
3 déc. 2008 à 20:44
oui j'ai compris pour le premier affichage car il faut qu'il les enregistre pour les connaître pardon :). Bah en fait je l'ai fait dans mon programme mais bon ça marche pas :'( !! En fait j'avais rajouté une méthode ecoute() dans idiot et j'avais rajouté aussi des lignes de code dans la classe BouteEnTrain (methode presentation) qui rajouterait la condition if(... instanceof Idiot) ... mais ça me buguait le truc :'( donc voilà je l'ai viré :'(

FARRUGIA Patrick
0
Rejoignez-nous