TP4 Gros soucis pour la question 3

Programmation Avancée

Modérateur : Douin

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

TP4 Gros soucis pour la question 3

Message par RENAUD » 23 oct. 2018 16:38

Bonjour

Ne connaissant pas ou quasiment rien à Java pour cet UE. Donc encore moins AWT et SWING.
Si on rajoute la découverte des concepts design pattern, ici observer, et encore plus MVC, je me suis totalement perdu sur de nombreux sites pour essayer comprendre tous les aspects. Heureusement hier en fin d'ED, j'ai entendu une réponse à un auditeur présentiel, de ne pas trop paralléliser le pattern observer, MVC et "AWT " pour cette question et en général. Ça m'a débloqué un peu.

Par contre vu que certains auditeurs ont mis "peu de temps" à faire le début de cette question, je ne sais pas si j'aborde mal mes solutions ou me complique. Comme il y a beaucoup trop de choses inconnues parfois à chaque ligne donc j'improvise mais lentement.
Par ex pour suivre la séquence 3+2*5 j'ai trouvé comme solution sur Controleur de créer une pile "operateur" en plus pour empiler les operateurs

Voici par ex quelques points qui me bloquent actuellement :
- je fais des :
...(new ActionListener(){
public void actionPerformed(ActionEvent e) { //donnee.requestFocusInWindow();}
});
et dans ce actionPerformed anonyme je n'arrive pas à appeler pile de Controleur.

- j'ai l'impression que la classe Controleur fait quasiment tout pour cette question.
mais ça me parait logique vu que c'est elle qui détecte traite les événements et fait les "calculs" sur pile avant que le modele renvoie à la vue.

- pour l'instant je ne vois pas à quoi sert vraiment actualiserInterface() et comment l'utiliser.
le bouton clear fait un raz de tous les champs et de la pile Controleur.
et la vue est automatiquement mise à jour par le modele.
est ce là qu'on fait le traitement de clear par ex ?

- globalement la difficulté majeure est de découvrir au fur à mesure les méthodes awt event etc... sans être sur du résultat ou si c'est pertinent

Bref un coup de main des éclaircissements voir des pistes seraient le bienvenu si je veux rendre ce tp avant 2019 ;)
Merci

Douin
Messages : 341
Inscription : 18 mars 2009 15:46

Re: TP4 Gros soucis pour la question 3

Message par Douin » 23 oct. 2018 17:24

Bonjour,

Choisissez le plus simple, par exemple pour le bouton empiler

Code : Tout sélectionner

        boutons.add(push); push.addActionListener(new PushOperation());
Avec comme classe interne, partielle, possible

Code : Tout sélectionner

    
    private class PushOperation implements ActionListener{
        public void actionPerformed(ActionEvent ae){
            try{
                pile.empiler(operande());
            }catch(.....
            }
            actualiserInterface();
        }
    }
- actualiserInterface() et comment l'utiliser.
L'interface est actualisée, par exemple pour l'opération Push, le bouton est inhibé si la pile est pleine...

Bonne fin de tp4

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

Re: TP4 Gros soucis pour la question 3

Message par RENAUD » 23 oct. 2018 18:03

ok c'est sur quant on découvre les evénements on se perd dans les méthodes et le code plus long.
je vais rester sur ma manière de structurer même si c'est un peu alambiqué sinon je vais encore me perdre à tout refaire ou faire plus simple.
je pense avoir compris l'ensemble mvc et comment réagissent les classes et les composants awt.
maintenant faire bien et simple ça va être compliqué ;)

sinon j'avais oublié l'englobante.
quelqu'un ou mr douin peut il me dire quand même si je suis bien parti : c'est bien la classe Controleur qui fait tout le boulot là ?
Ca peut même être une piste pour la question 3.2 non ?
parce que ça me dérange un peu qu'un outil, (on peut appeler un MVC un outil ?), il y ait q'une seule classe qui fasse tout le boulot ça ne fait pas très optimisé et vraiment "package outil"

ps : en plus pas de bol pas sur d'être là (longtemps) pour la visio de ce soir, cause mon pc siffle fort le ventilo va s'envoler sans mon proc si je fais rien !

rousset
Messages : 14
Inscription : 30 sept. 2018 9:23

Re: TP4 Gros soucis pour la question 3

Message par rousset » 24 oct. 2018 0:20

Bonjour /Bonsoir Renaud,

Bravo pour faire l'UE sans connaissance en Java :) !
Je sais pas si ça servira, et que je vais pas embrouiller plus que dépanner.., mais oui tu es bien là à poser les addActionListener dans le Controleur et à les traiter dans cette classe.
Dans la vidéo de cours, au bout de 2h à peu près, l'enseignant illustre MVC avec un "Nombre" comme Modèle, une vue graphique, et un controleur. Il n'y a pas le même "choix de conception du modèle", mais on retrouve cette "syntaxe raccourcie", et peut être que ce passage du cours te sera utile.

Je crois que tu es déjà prêt à faire la 3_2 :).
J'évite d'épiloguer, parce qu'en plus il est demandé de critiquer le modèle et d'en proposer un autre comme tu as vu. Le passage de cours dont je parle est peut être intéressant à double titre, parce qu'on a un MVC "implémenté" différemment que l'exercice.

Bon voilà, je sais pas si le message servira à grand chose, j'ai vu ton message, alors je réponds histoire de participer au groupe.

Cordialement.

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

Re: TP4 Gros soucis pour la question 3

Message par RENAUD » 24 oct. 2018 10:57

Merci
de quelle vidéo tu parles ? le podcast du cours mardi 16/10 ou de l'ed lundi 22/10 ?

a.tortevois
Messages : 47
Inscription : 05 oct. 2018 16:00
Contact :

Re: TP4 Gros soucis pour la question 3

Message par a.tortevois » 24 oct. 2018 11:42

Bonjour,
Est-ce qu'on pourrait traiter les Listener dans un seul actionPerformed avec un switch/case ?
ça "allégerais" le code ou est-ce que "c'est mal !" ?

Merci

rousset
Messages : 14
Inscription : 30 sept. 2018 9:23

Re: TP4 Gros soucis pour la question 3

Message par rousset » 24 oct. 2018 13:36

RENAUD a écrit :
24 oct. 2018 10:57
Merci
de quelle vidéo tu parles ? le podcast du cours mardi 16/10 ou de l'ed lundi 22/10 ?
De rien pas de soucis.
Celle du cours <i>(remarque (qui ne sert pas à grand chose) : à part le podcast de l'ED1, j'ai pas trouvé ceux des autres ED, je pense pas être sur ceux de 2017-18 et les vidéos correspondent pas, j'ai fait sans)</i>.
Je suis au taff, je peux me tromper mais je crois bien que c'est celle du 16/10, vers 2h00 de vidéo.

Alors pareil je m'essaie un retour (je comprends bien que c'est un retour de l'enseignant qui est attendu) en espérant ne pas mal aiguiller. C'est pour la question où y a Bouton A, B et C que perso j'ai utilisé un switch. Après chaque btX.addActionListener(...) je définissais un "setCommand("boutonX") pour ensuite détecter l'écouté auquel on réagit (switch(event.getCommand()) {case "boutonA": ... case "boutonX":...}.
Pour la question 3, j'ai repris une syntaxe raccourcie, avec classe interne, comme dans la vidéo de cours qu'on évoque.., je crois qu'on peut faire appel à un seul actionPerformed, faut juste trouver le moyen d'indiquer quel bouton a été actionné.
J'espère ne pas avoir noyé la question (qu'elle reste visible pour l'enseignant).

@++

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

Re: TP4 Gros soucis pour la question 3

Message par RENAUD » 24 oct. 2018 19:02

Question peut-être triviale :
le bouton push c'est "=" ou c'est empiler ?

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

Re: TP4 Gros soucis pour la question 3

Message par Rodrigues_A » 24 oct. 2018 21:00

Bonsoir,
Comme toi, je ne suis pas très à l'aise avec Java, j'ai commencé l'an dernier avec les NFP135 et NFP136 + openclassroom cet été.

Push signifie empiler, tu devrais utiliser Applet viewer pour simuler et comprendre le fonctionnement attendu de l'IHM.
Il y a aussi un travail à faire sur l'état des boutons (actifs dans certains cas inactif dans d'autres).

Prends ton temps, en plus des cours, je regarde du coté d'openclassroom:
https://openclassrooms.com/fr/courses/2 ... er-en-java
et aussi JM Doudoux:
https://www.jmdoudoux.fr/java/dej/titre.htm
il y a aussi les javadocs, le problème est que je suis plus mauvais en Anglais qu'en Java :(
Bon courage,

Anthony

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

Re: TP4 Gros soucis pour la question 3

Message par RENAUD » 25 oct. 2018 11:18

merci je ne sais pas si c'est rassurant que je ne sois pas seul.
oui je n'avais pas lancé l'applet elle devrait fonctionner en plus j'ai changé le path pas eu de problème avant.
du coup ça aurait un peu changé les choses c'est plus "simple"
parce que je gérais soit un keylistener dans donnee et deux operandes succéssifs à empiler soit avec un operateur avant l operation. moins evident !

Tapio
Messages : 2
Inscription : 20 oct. 2018 17:09

Re: TP4 Gros soucis pour la question 3

Message par Tapio » 26 oct. 2018 17:22

Rassurez-moi, vous aussi ça vous prend des plombes à faire les TP ? C'est pas simplement moi qui suis mauvais ? :D

On vient à peine de voir le modèle MVC on nous demande déjà de le critiquer. J'ai peur de pas avoir grand chose à dire de ce côté là :s. En tous cas la question 3 n'a pas eu d'échec, c'est déjà ça

a.tortevois
Messages : 47
Inscription : 05 oct. 2018 16:00
Contact :

Re: TP4 Gros soucis pour la question 3

Message par a.tortevois » 26 oct. 2018 17:48

Même combat ... d'autant plus que je débarque sur Java :(

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

Re: TP4 Gros soucis pour la question 3

Message par RENAUD » 26 oct. 2018 19:59

Désolé par avance pour ce message un peu désabusé. Encore pleins d’échecs à la soumission Jnews de la question 3 et toujours sur les tests dans mon cas. Encore une fois, ok! maintenant j'ai l'habitude sauf que ça me donne de moins en moins envie de soumettre voir même d'essayer de rendre un tp pour la note. Le tp étant aussi soumis à Jnews .
Alors j'ai encore l'habitude de tester avec des system.out.*, j'ai aussi encore tendance à ne pas faire de test si ce n'est pas expressément demandé surtout si je trouve que les tests déjà présents sont pour moi suffisants. Étant très mauvais dans cette partie je ne vois pas de nouveaux tests pertinents, je les trouve bien moi les tests inclus dans le tp :)

Mon problème c'est ce message :
"Un test JNEWS comporte plusieurs assertions, une assertion fausse induit un échec"
Le risque je mette une seule assertion fausse est grande et de ne pas comprendre pourquoi et où et Jnews semble m'indiquer un nom de test différent que je vais vouloir créer pensant un oubli et ça ne changera pas la prochaine soumission.
En plus si ils sont bons de mon coté alors une assertion fausse ça doit être une assertion non attendue peut-être ? par ex au lieu d'un asserttrue(a==b) un assertequals(a,b)...

Je vais finir le tp. Revoir les tests. Soumettre peut-être une dernière fois sans d'espoir...
Bref la vie serait moins cruelle sans Jnews ou alors inviter Jnews à Halloween ;)

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

Re: TP4 Gros soucis pour la question 3

Message par RENAUD » 26 oct. 2018 22:20

Autant pour moi mais c'est révélateur de mon niveau :/ j'ai confondu avec les tests de la question 1 ou 2
mais je comprend à peine la méthode empiler du test et les autres, surtout typeLine mouseMoveAndClick mouseMoveAndClickClick encore moins.
je ne vois donc pas comment corriger le test pour qu'il passe.
quant à faire les miens j'ai tellement galéré (plus de 10j) juste à comprendre les objets et les méthodes pour les événements dans controleur alors faire des tests !
Je crois que je vais jeter l'éponge désolé j'abandonne :(

Douin
Messages : 341
Inscription : 18 mars 2009 15:46

Re: TP4 Gros soucis pour la question 3

Message par Douin » 27 oct. 2018 10:29

Bonjour,

Mettez de côté ces tests des IHM,ils ne sont présents que pour information,

l'essentiel réside dans les classes "métiers/TP" et la classe de tests unitaires fournies qui vous aide à ce qui est attendu, l'applette en ligne est également une aide de plus

Bonne fin de tp4

à M. Tapio
On vient à peine de voir le modèle MVC on nous demande déjà de le critiquer
Les critiques sont dans le support cf. le cours 4
http://jfod.cnam.fr/NFP121/supports/NFP ... tielle.pdf
diapositives 47 et 52

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité