fpat
Messages postés11Date d'inscriptionmercredi 8 octobre 2008StatutMembreDernière intervention20 décembre 2008
-
3 déc. 2008 à 16:54
fpat
Messages postés11Date d'inscriptionmercredi 8 octobre 2008StatutMembreDernière intervention20 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;
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 ...";
cs_Chatbour
Messages postés764Date d'inscriptionjeudi 27 juillet 2006StatutMembreDernière intervention 6 septembre 201019 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
}
}
}
}
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("--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..
fpat
Messages postés11Date d'inscriptionmercredi 8 octobre 2008StatutMembreDernière intervention20 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 :)
fpat
Messages postés11Date d'inscriptionmercredi 8 octobre 2008StatutMembreDernière intervention20 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é :'(