JNEWS test TP7 Q1

Programmation Avancée

Modérateur : Douin

Amokrane
Messages : 18
Inscription : 08 oct. 2018 22:19

Re: JNEWS test TP7 Q1

Message par Amokrane » 13 déc. 2018 3:56

le problème c'est que tu stockes la méthode définie par la toute première superclasse de l'arborescence des superclasses qui l'ont définie .
par exemple toString() dans HashSet: tu stockes
public java.lang.String java.lang.Object.toString()
au lieu de
public java.lang.String java.util.AbstractCollection.toString()
ce qu'il faut faire c'est : si la méthode est non redéfinie localement tu remontes la chaine d'héritage et dès que tu la trouves tu la stockes..

Rodrigues_A
Messages : 52
Inscription : 25 sept. 2018 21:57

Re: JNEWS test TP7 Q1

Message par Rodrigues_A » 13 déc. 2018 8:57

Bonjour,

Désolé Renaud, je ne peux pas t'aider, ce TP me donne beaucoup de fil à retordre du coup je n'avance pas.
Je n'ai toujours pas résolu mon problème de Question 1 et quelque chose doit m'échapper pour la Question 2.
j'ai a nouveau repris ma Q1 et j'hésite entre les 2 solution suivantes, est-ce que vous pouvez les critiquer avant ma dernière soumission SVP.
1ère solution:
public double invoquer(String nomDeLaMethode,double arg1)throws Exception{
try{
ifcondition{
mon code qui fonctionne
}
else {
throw new NoSuchElementException("methode inexistante");
}
}catch(NoSuchElementException NSE){
throw NSE; // adoptée lorsqu'il y a plusieurs solutions, variante throw new NoSuchElementException("methode inexistante"); je ne trouve pas cette variante élégante, cela fait "bidouille"
}
}
2ème solution:
public double invoquer(String nomDeLaMethode,double arg1)throws NoSuchElementException{
try{
ifcondition{
mon code qui fonctionne
}
else {
throw new NoSuchElementException("methode inexistante");
}
}catch(Exception E){
throw new NoSuchElementException("methode inexistante");
}
}
Je ne vous demande pas de solution mais plutôt m'indiquer si je fait fausse route.

Sinon, pour la Q2 je bloque sur
@param observer une implementation de l'interface java.util.Observer
je n'arrive pas à l'implémenter, un conseil (page de cours, site explication ...), si cela tombe à l'exam, je ne valide pas :-(.
Cela fait 2 jours que je cherche sur le net.
Pourtant après le cours et l'ED je pensais que s'était clair.

Merci pour votre aide, pas de solution toute faite SVP mais plutôt de l'aide pour faciliter ma compréhension des différents mécanismes.

Bonne journée,

Anthony

Merci d'avance

RENAUD
Messages : 101
Inscription : 21 sept. 2018 19:34

Re: JNEWS test TP7 Q1

Message par RENAUD » 13 déc. 2018 16:14

1)
Je crois avoir résolu le problème
Je n'ai pas voulu modifier trop le code de Introspection une habitude après les retours Jnews quand ça fonctionne de mon coté !
Je faisais tous les tests dans un seule méthode test
// // à compléter
// assertEquals(10, Introspection.getHeritees("java.util.AbstractCollection").size());
// // à compléter
// assertEquals(283, Introspection.getHeritees("javax.swing.JApplet").size());
etc...
Mais getHeritees est static comme beaucoup des méthodes de la classe donc elles "gardent" les valeurs des variables précédentes tant que je ne suis pas sorti de la méthode de test enfin c'est ce que je me suis dit! Pas vérifié car dans ce cas AbstractCollection a du passé mais pas les autres si je suis mon idée.
De plus après une dernière "erreur" jnews sur le nombre de méthodes pour AbstractSet mais je ne testais pas "abstract" par ex juste "public" et "protected" j'ai étendu les conditions. Pas encore soumis me reste que deux "vies" jnews ;)
De plus mon pc est instable il freeze sérieux obligé de rebooter je ne sais pas pourquoi : maj du navigateur web firefox?, les vm installés pour beans?, des restes du java 1.3 enlevé?, autres ???

2)
Je n'ai pas encore bien regardé pour la question de Anthony
mais déjà ce qui me parait bizarre throw et throws propage l'exception alors que tu es encore dans le try si l'exception est propagé loin ça repousse le catch qui lui aussi propage l'exception.
Pour moi ton (if (condition) instructions; else throw exception ou NSE) devrait suffire c'est aux programmes appelant de gérer à la limite le try catch puisque l'exception est propagée.

Rodrigues_A
Messages : 52
Inscription : 25 sept. 2018 21:57

Re: JNEWS test TP7 Q1

Message par Rodrigues_A » 13 déc. 2018 16:33

@ Renaud,
Content que ton problème soit résolu et merci d'avoir partagé ta conclusion.

Merci pour ta remarque, c'est effectivement comme cela que je comptais régler mon problème, if else throw, sachant que j'ai des captures d'exception dans mes méthodes appelées en condition (appel en cascade), ne me restant qu'une soumission possible, je suis parti sur une technique "ceinture et bretelles" qui ne me plait guère d'où ma question.

je me suis inspiré de ce forum;
https://stackoverflow.com/questions/320 ... r-trycatch
et :
https://stackoverflow.com/questions/169 ... he-throw-e
mais c'est en c#

Toutes les technique que j'essaie passe les test importés de JNEWS en locale, mais quid des tests JNEWS?

Tes tests sont passés sans ce type de bidouillage??

Pour mon problème à la question 2 je regarde à nouveau ce soir car je ne peux pas bosser mon TP ce we, ça va être dur de le finir.

Bonne journée,

Anthony

Amokrane
Messages : 18
Inscription : 08 oct. 2018 22:19

Re: JNEWS test TP7 Q1

Message par Amokrane » 13 déc. 2018 19:20

Bonsoir,

le try catch dans q1 est nécessaire car dans la méthode invoquer tu utilises d'autres méthodes qui lèvent une exception .
pour la q2, regarde ce site, l'introspection est bien expliquée(pour invoquer regarde la partie (20.4.1))
https://www.jmdoudoux.fr/java/dej/chap- ... ection.htm

Rodrigues_A
Messages : 52
Inscription : 25 sept. 2018 21:57

Re: JNEWS test TP7 Q1

Message par Rodrigues_A » 13 déc. 2018 21:42

@ Amokrane,

Merci pour ton aide, je m'empresse de finir la Q1 et de lire le chapitre de ton lien, j'ai plusieurs fois utilisé ce site, mais là je t'avoue que je l'ai pas fait, j'étais allez voir du coté d'Open Classroom qui est moins détaillé mais souvent plus simple pour les non-développeurs comme moi.

Je vous tiens au courant sachant que je ne soumettrais rien aujourd'hui, je préfère avancer ce soir et relire demain pour éviter les erreurs d'étourderie.

En tout cas merci et bonne soirée,

Anthony

CHEGHANNOU
Messages : 45
Inscription : 02 oct. 2018 7:10

Re: JNEWS test TP7 Q1

Message par CHEGHANNOU » 13 déc. 2018 22:44

Désolé Anthony j'ai pas vu la 2ème page de cette discussion quand j'y suis venu cette après midi.
En fait, dans ta methode Invoquer tu crées une NoSuchElementException (throw new NoSuchElementException() ) dans un bloc try et le bloc catch attrape une NoSuchElementException.
Donc, sur JNews l'exception attendue n'existe pas car tu l'as attrappé dans ta méthode invoquer.

Rodrigues_A
Messages : 52
Inscription : 25 sept. 2018 21:57

Re: JNEWS test TP7 Q1

Message par Rodrigues_A » 13 déc. 2018 23:06

Désolé, je n'avais pas vu que tu m'avais répondu sur le forum, du coup je t'ai répondu en MP.
Si tu me réponds, j'indiquerais ce que je fais afin que mes lacunes puissent servir à d'autres.

Merci,

Anthony

Rodrigues_A
Messages : 52
Inscription : 25 sept. 2018 21:57

Re: JNEWS test TP7 Q1

Message par Rodrigues_A » 15 déc. 2018 0:00

@ CHEGHANNOU
Bonjour,
Désolé, mais mon précédent message en MP à l'air de bouclé il reste dans les reste à envoyé, j'espère que tu ne reçois pas mon message en boucle. si c'est le cas dsl, j'ai supprimé le message.
si tu n'a rien reçu tant mieux, j'ai résolu mon pb pour les 2 premières méthodes de la Q2, les 2 autres se passent mal car JButton ne possède pas de méthode ActionListener chez moi, un problème de recherche de méthode?? pourtant j'utilise srce.getMethods().

Bonne soirée,
Anthony

Anthony

RENAUD
Messages : 101
Inscription : 21 sept. 2018 19:34

Re: JNEWS test TP7 Q1

Message par RENAUD » 15 déc. 2018 4:36

J'ai revu cette histoire d'Exception une dernière fois
si on propage par throws Exception générale au début d'une méthode et que dans la méthode sur une condition on marque et propage une exception spécifique ici : "throw new NoSuchElementException()"
alors dans une autre classe y compris les tests junit un try catch qui appelle cette méthode en cas d'exception général Exception elle sera attrapée et levée :
try{
ParIntrospection.lierObservableEtObserver( obsa, obse);
}
catch(Exception e){
// NoSuchElementException
System.out.println(e);
}
il suffit alors d'afficher si on veut par ex System.out.println(e); pour savoir la class d'exception.

Rodrigues_A
Messages : 52
Inscription : 25 sept. 2018 21:57

Re: JNEWS test TP7 Q1

Message par Rodrigues_A » 16 déc. 2018 15:39

Bonjour Renaud,
Tu bosses jusqu-à pas d'heure, merci pour ton analyse, je vais essayer d'applique je ne soumettrais que ce soir.
Bonne Journée,

Anthony

Rodrigues_A
Messages : 52
Inscription : 25 sept. 2018 21:57

Re: JNEWS test TP7 Q1

Message par Rodrigues_A » 18 déc. 2018 14:43

Bonjour à tous,
Grâce à votre aide, ma dernière soumission à la Q1 est passée, j'ai utilisé une structure type:
public double invoquer(String nomDeLaMethode,double arg1)throws Exception{
if condition{
invocation
}
else {
throw new NoSuchElementException("methode inexistante");
}
}
pour la Q2, c'était plus simple que prévu, c'est passé.
Merci à vous.

La 3ème question me pose plus de pb, je pensais à un algo de type:
// - reccupération d'un ensemble contenant toutes les classes héritees (avec getMethods en supprimant les privates, et abstract...)
// - reccuperation d'un ensemble contenant toutes les heritees et redefinies
// - l'ensemble retourner correspond à la soustraction des classes heritees - heritees et redefinies

je pensais travailler avec des ensembles, que pensez vous de ce début? Après le cours de ce soir, il me restera 2h pour finir mon implémentation et 1 pour le rapport, donc si je fais fausse route dites le moi svp.

J'ai déjà avancé et fait 3 soumissions avec encore beaucoup d'échecs.

Bon après midi,

Anthony

Répondre