Pattern MVC [Résolu]

Signaler
Messages postés
75
Date d'inscription
jeudi 12 août 2010
Statut
Membre
Dernière intervention
5 juillet 2014
-
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
-
Bonjour à tous, j'aimerais juste des éclaircissements sur java de façon générale et sur le concept MVC en particulier. Je n'arrive pas à très bien comprendre comment pouvoir utiliser les méthodes de classes de différents packages au sein d'autres packages ou dans le même package.

1- Par exemple, si je dispose de deux packages A et B. Comment pourrais-je utiliser la méthode « methA » de la classe « classA » du package « packA » dans la classe « classB » du package « PackB ». Est-ce qu'une simple instanciation de la classe « classA » du package « packA » dans la classe « classB » du package « PackB » suffirait à résoudre mon problème.

2- Dans le cas des classes issues du même package est ce que l'instanciation d'une classe dans l'autre est-il également la solution ?

3- Quand on doit utiliser une classe comportant des paramètres (une autre classe) dans une classe du même package. Comment fait-on ?

5 réponses

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
345
Pour t'expliquer comment ça marche en partant du principe que tu connais et comprends le design pattern Oberver :

- Le modèle (la partie métier de ton application) hérite de Observable qui permet de notifier les observateurs des modifications effectuées. Tu notifies les modifications aux observers sur toutes les méthodes set au moins.

- Les classes de l'ihm implémentent Observer et dans la méthode update, tu effectues les modifications pour que l'ihm colle aux paramètres de l'objet métier lorsqu'elle est notifiée d'un changement. Ton ihm possède un ou plusieurs contrôleurs.

- Les classes du contrôleur contiennent deux méthode au moins geTModel() et effectuerOperation() (ou équivalent) qui te permet de gérer les événements qui surviennent sur la vue.
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
345
Salut,

Je pense que tu ne comprends pas du tout l'architecture MVC. Ce n'est pas une question de packages mais c'est une décomposition entre la vue, le modèle et une couche de contrôle.

Les liens entre les packages se font normalement, c'est à dire en passant en paramètre des méthodes une instance de l'objet que tu veux utiliser.
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
345
A noter :
Si tu utilises jsf : tu as deux modèles MVC puisque jsf implémente un MVC pour la vue, le faces-config correspondant au contrôleur. Mais ce modèle MVC est uniquement pour la vue, il te faut en faire un autre dans lequel les managedBean sont la vue.

Si tu utilises Swing, les listeners sont "une sorte" de controleur pour lesquels les méthode actionPerformed() permettent de gérer les événements qui interviennent sur la vue. Il te suffit donc d'implémenter observer sur le model et le tour est joué.
Messages postés
75
Date d'inscription
jeudi 12 août 2010
Statut
Membre
Dernière intervention
5 juillet 2014

Merci bien Julien39 pour ces précisions,il se trouve que j'utilise Swing et ce n'est pas si évident d'utilisé le concept MVC,mais je fais avec en tout cas
Mon application fonctionne pour le moment bien,mais est qu'il est optimal je ne sais pas.Dans mon cas, mon model est un java bean qui prend en compte les propriétés de la classe, ma vue est bien entendu mon IHM ( le Jframe),le problème résidait quand une des mes vues devrait prendre en paramètre une autre vue.mais j'ai pu avoir des explications, quand il s'agit de vues du même package une simple instanciation dans la vue l'utilisant suffit,mais quand il s'agit de vue de différents package un import de la vue est nécessaire.
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
345
Alors là, je n'ai rien compris...