IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Java Discussion :

Questions sur MVC


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut Questions sur MVC
    Bonjour à tous,

    J'ai voulu apprendre le modèle MVC, enfin, bien l'apprendre. Quoi de mieux qu'un exercice pratique. Donc je suis parti pour faire un puissance4.

    Mais après 2 heures de développement et 5 classes plus loin je me pose de sérieuse question sur la "propreté" de mon code.

    Mon programme : une fenêtre qui contient un JPanel pour les scores et 7 autres JPanel pour les colonnes ( 7 instances de Colonne ).
    Dans Colonne j'ai un mouselistener pour détecter le clique de l'utilisateur et un actionlistener lié à un timer pour l'animation du jeton.
    "Puissance" est ma classe modèle qui contient le tableau à 2 dimension représentant le jeu.

    Mon soucis. dans le mouseListener de Colonne j'appel une méthode de Puissance ( ajouterJeton(int x, int y)) et là je me dit "M****" la vue appel directement le modèle...

    1ère question : Si je mets les mouselistener dans une autre classe et que je dise que c'est le controlleur. Es ce que ça arrangera le problème?

    2ème question : ici j'ai l'impression que le controlleur ne sert qu'à l'initialisation... Ai-je raison? Ai se que je dois faire pareil?

    Merci d'éclairer ma lanterne

  2. #2
    Membre éclairé
    Homme Profil pro
    NoOb
    Inscrit en
    Mai 2007
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : NoOb

    Informations forums :
    Inscription : Mai 2007
    Messages : 554
    Par défaut
    Salut,

    Citation Envoyé par Ivelios Voir le message
    Mon soucis. dans le mouseListener de Colonne j'appel une méthode de Puissance ( ajouterJeton(int x, int y)) et là je me dit "M****" la vue appel directement le modèle...

    1ère question : Si je mets les mouselistener dans une autre classe et que je dise que c'est le controlleur. Es ce que ça arrangera le problème?
    Comme indiqué sur le schéma de ton exemple, les actions utilisateurs passent par le contrôleur, qui lui modifie les données!

    En gros ton mouseListener appel une méthode du contrôleur, qui lui modifie tes données, qui elles notifient la vue qu'elles ont changées .

    Citation Envoyé par Ivelios Voir le message
    2ème question : ici j'ai l'impression que le controlleur ne sert qu'à l'initialisation... Ai-je raison? Ai se que je dois faire pareil?
    Voir ci dessus! Le contrôleur est l'intermédiaire.
    Le modèle et la vue n'échangent que sur changement du modèle.
    Le modèle notifie la vue qu'il a changé, donc la vue se met à jour.

  3. #3
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    En gros ton mouseListener appel une méthode du contrôleur, qui lui modifie tes données
    ça c'est bon je comprend.
    qui elles notifient la vue qu'elles ont changées .
    Je bloque à ce niveau là.
    Parceque je crée mon modèle que je passe en paramètre de mon controlleur et lui crée les vues. ( comme dans les cours )
    donc je peux faire vues ---> modèle. Mais je ne vois pas comment faire modèle ---> vues
    Très utile si je rajoute une IA. Ou indiquer à la vue que la partie est fini.
    En faite, je ne comprend pas le "notifier".

    question 3 : Dans l'absolue, le controlleur ne sert à rien? il fait juste l'intermédiaire si j'ai bien compris.

  4. #4
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Citation Envoyé par Ivelios Voir le message
    Mais je ne vois pas comment faire modèle ---> vues
    Très utile si je rajoute une IA. Ou indiquer à la vue que la partie est fini.
    En faite, je ne comprend pas le "notifier".
    Il s'agit du pattern observateur, implémenté via des listeners : il doit y avoir une entrée dans la faq Java-Interfaces Graphiques à ce sujet.

  5. #5
    Membre éclairé
    Homme Profil pro
    NoOb
    Inscrit en
    Mai 2007
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : NoOb

    Informations forums :
    Inscription : Mai 2007
    Messages : 554
    Par défaut
    Citation Envoyé par Ivelios Voir le message
    Je bloque à ce niveau là.
    Parceque je crée mon modèle que je passe en paramètre de mon controlleur et lui crée les vues. ( comme dans les cours )
    donc je peux faire vues ---> modèle. Mais je ne vois pas comment faire modèle ---> vues
    Très utile si je rajoute une IA. Ou indiquer à la vue que la partie est fini.
    En faite, je ne comprend pas le "notifier".
    Ton modèle doit être écoutable (voir objet écoutable) !!
    C'est le même principe qu'un JButton sur lequel tu met en écoute un ActionListener (écouteur d'action) qui réalise un traitement lors d'un click sur ce fameux bouton.
    Sur le même principe ta vue écoute ton modèle.

    Regarde du côté des classes Observer / Observable.

    Citation Envoyé par Ivelios Voir le message
    question 3 : Dans l'absolue, le controlleur ne sert à rien? il fait juste l'intermédiaire si j'ai bien compris.
    Je dirais que oui, afin de bien séparer les deux couches vue / données. Mais je ne suis pas expert MVC .

    Il existe de nombreux tutos sur le pattern MVC et les objets écoutables en java, y compris sur dvp.

  6. #6
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Bon, je viens de taper quelques lignes et je pense avoir compris... "LA CHOSE"
    j'avais bien lu ce post mais j'étais resté sur le C** avec tous les EventListener dans tous les sens.
    Mais après re-re-relecture, c'est bien plus claire .

    Mais bon jamais 3 sans 4 donc :
    question 4 : Juste besoin d'un petit avis sur la manière dont j'organise les chose, si c'est cohérent?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public interface PlateauListener extends EventListener{
        void nouveauJeton(PlateauEvent e);
        void annulerJeton(PlateauEvent e);}
    //Attribut de plateauEvent : int x, int y, int joueur, Color couleurJoueur
    &
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public interface PartieListener extends EventListener{
        void partieFini(PartieEvent e);
    }
    //Attribut de PartieEvent : int gagnant (0:null,1: rouge gagne, 2:jaune gagne)
    C'est surtout pour me rassurer et que je ne parte pas en cacahuète

  7. #7
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    J'ai bien compris le truc maintenant. Il fallait juste que je le fasse une fois
    Merci Génoce & herve91 pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question sur MVC
    Par ahmedpa dans le forum Développement Web en Java
    Réponses: 8
    Dernier message: 15/10/2012, 20h31
  2. Question sur MVC
    Par abadou dans le forum ASP.NET MVC
    Réponses: 3
    Dernier message: 14/03/2011, 00h29
  3. Diverses questions sur MVC, QWidget et QSettings
    Par Agent Smith 2.0 dans le forum Débuter
    Réponses: 3
    Dernier message: 26/02/2009, 13h56
  4. Question sur le MVC
    Par Invité dans le forum MVC
    Réponses: 2
    Dernier message: 12/05/2007, 17h09
  5. Questions sur le modèle MVC
    Par dr23fr dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 05/12/2006, 19h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo