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

Interfaces Graphiques en Java Discussion :

Le pattern MVC quelle structure ?


Sujet :

Interfaces Graphiques en Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Par défaut Le pattern MVC quelle structure ?
    Bonjour,

    J'ai pas l'habitude de demander de l'aide mais il semble que j'ai épuisé les moteurs de recherche sans trouver ma solution.
    J'apprend en autodidacte le Java et jusque là ça se passait plutôt bien

    Mais j'essaye depuis plusieurs semaines de créer un programme en utilisant le design pattern MVC. J'ai réussi à le faire fonctionner avec des exemples simples comme j'en ai trouvé sur plusieurs tutoriels du net.

    J'ai ensuite voulu utiliser ce pattern pour concevoir un programme avec une interface graphique et un modèle plus complexe. (En gros c'est pour faire ce programme que je me suis mis à la programmation joignant l'utile à l'agréable).

    Je cherche à faire un programme de gestion pour des Objets dans un JDR papier.

    J'ai donc, pour simplifier, les catégories d'objet suivantes : Sans Type, Arme, Armure, etc.
    Chacun de ces objets possède des caractéristiques communes à tout les objets comme le Nom, le type (Arme, Armure, aucun, etc) et la description. Tandis que chacun des types rajoute des caractéristiques particulières (ainsi une arme aura une valeur de dégâts, une portée... et une armure une résistance une zone de couverture...).
    J'aimerais savoir quelle est la meilleur façon d'utiliser le MVC dans ces cas là.

    Un diagramme de classe m'aiderai beaucoup car en fait je bute sur le changement de type. Chacun de mes types à son propre controler et c'est là que ça marche pas malgré de longues heures de prise de tête... Je n'ai pas trouvé d'exemple d'implémentation du MVC avec plusieurs controler malgré mes recherches


    Pour info j'ai fait les classes suivantes dans mon programme

    AbstractObject //classe abstraite qui hérite d'une classe "observable" et possède 2 valeur : nom et description
    NoType //classe qui hérite de AbstractObject et n'ajoute pas de valeur
    WeaponType //classe qui hérite de AbstractObject et ajoute une portée et une valeur de dégats
    ArmorType //classe qui hérite de AbstractObject et ajoute une surface de recouvrement et une résistance

    AbstractControler // Classe abstraite qui comprend un AbstractObject en protected et permet de modifier le Nom, le Type et la description d'un AbstractObject
    NoTypeControler // hérite de AbstractControler
    WeaponTypeControler // hérite de AbstractControler et ajoute les méthodes pour modifier portée et dégats
    ArmorTypeControler // idem

    Mes classes View qui héritent toutes d'une AbstractView qui instancie un AbstractControler et hérite d'une classe observer perso.

    une classe main qui ressemble à ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mainObject = new NoTypeType();
    mainControler = new NoTypeControler(mainObject);
    mainView = new MainView();
    mainObject.addObserver(mainView);
    Merci à ceux qui auront pris le temps de lire ce message (et éventuellement d'y répondre)

  2. #2
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Bonjour,

    il faut clarifier un point essentiel : qu'est ce que tu comptes faire exactement?

    Tu nous détailles ta structure de données, mais point de vue IHM, c'est flou. Or, MVC, c'est pour une interface.
    Donc pourrais-tu nous éclairer sur ce à quoi ressemblerais ton IHM?

    Après, saches que MVC n'est qu'un design pattern. J'entends par là qu'il donne des pistes à suivre, c'est à chacun de l'adapter à ses besoins.
    A grande échelle, il y a plusieurs façon d'appliquer MVC, donc il faut commencer par cerner ton objectif pour dessiner la solution la plus adaptée.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Par défaut
    Alors pour l'IHM je la fait avec Swing

    J'ai une JFrame principale qui affiche en gros 3 JPanels.
    Un JPanel dans lequel mes composant sont, un JTextField pour modifier le nom, une JComboBox pour modifier le type et un JtextArea pour modifier la description.

    Le 2e JPanel possède un SwitchLayout qui me permet d'afficher un JPanel qui correspond au Type sélectionné. Et le JPanel affiché comporte des composants qui me permettent de modifier les caractéristiques particulières de mes Objets comme les dégats de l'arme et la résistance de l'armure.

    Le dernier JPanel comporte une JTextArea non éditable dans laquelle est écrite la description totale de mon objet avec son nom, son type, sa description Etc...

    Merci de te pencher sur mon problème

    En fait là où je galère c'est gérer plusieurs classes qui servent de controler. il me manque un exemple pratique.

  4. #4
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Je ne suis pas sûr de te suivre sur tout ce que tu compte faire exactement, mais je pense que la solution doit coller:

    Tu fait un seul modèle qui contiendra les infos dont tous tes panels ont besoins pour s'afficher.
    Tu semblais parti sur l'utilisation des Observer/Observable, donc ce modèle sera un Observable.

    Ensuite, dans ta vue, c'est à toi de découper et de décider quels seront les composants "principaux".
    J'entends par composant principal un composant qui sait tirer les infos du modèle pour s'adapter.
    Par exemple, imaginons un composant présentant une image et un bouton "Noir & Blanc". Dans le modèle, tu aurais le chemin de ton image et un booléen indiquant si l'image est en noir et blanc. Selon la valeur de ce booléen, le bouton sera disponible ou pas. Dans ce cas, le bouton n'a pas réellement à connaître le modèle, c'est le composant parent ("principal") qui va lui dire de changer d'état.
    Les composants non-principaux sont :
    - soit des composants de bas niveaux avec un comportement pré-défini et généralement assez simple,
    - soit des composants qui ne sont pas impactés par le modèles (JLabel fixes, JPanel servant à la mise en page)

    Ces composants principaux seront tes Observer sur le modèle.

    Tes controleurs se résumeront principalement aux listeners de tes composants.


    Comme je l'ai dit dans mon post précédent, c'est une solution, mais il y en a d'autres.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Par défaut
    Citation Envoyé par Deaf Voir le message
    Tu fait un seul modèle qui contiendra les infos dont tous tes panels ont besoins pour s'afficher.
    .
    J'y ai pensé mais cette solution vas me donner une classe énorme ?
    Je me suis attaqué au problème avec le moins de données possible mais mes objet auront de très nombreuses caractéristiques... Si je réunis tout dans une classe ça risque d'être très vite illisible non ?
    Parce-que j'aurais de nombreux types qui auront tous des caractéristiques particulière.

    De plus si j'ai bien compris, il me faudrait un seul controler, qui lui aussi pour le coup serait énorme

    Je continue de bosser dessus mais mon ordi risque de ne pas survivre

  6. #6
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Quand je dis que le modèle possède toutes tes infos nécessaires, ce n'est pas forcément à plat.
    Si je reprends ta description, il contiendrait un seul objet : celui décrit par tes panels.
    Et cette structure-là, tu l'as déjà visiblement.
    La chose que tu as à faire, c'est de construire un Observable permettant de récupérer ton objet, et éventuellement la description détaillée de ton 3e panel.

    Pour le controleur, tu n'as pas à faire qu'une seule classe. Tu peux faire un controleur principal dont le but sera de placer les listeners sur les composants. Ces listeners peuvent très bien être des classes à part entière. Après ce n'est que de l'organisation. Tout fourrer dans une seule classe n'est valable que lorsque tu as une interface avec 2/3 listeners (genre deux champs et un bouton).

    Et ne t'inquiète pas, ton ordi peut en soutenir beaucoup plus

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/10/2014, 16h32
  2. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  3. Quelle structure Perl pour lire file texte formaté
    Par calima dans le forum Langage
    Réponses: 2
    Dernier message: 26/07/2006, 14h51
  4. [Arbre] Quelle structure de table ?
    Par monmien dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 24/01/2006, 08h34
  5. [Strategie]arborescence : quelle structure choisir ?
    Par iubito dans le forum Général Java
    Réponses: 12
    Dernier message: 20/09/2004, 14h46

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