Implémentation des méthodes dans un fichier séparé, possible? - Java - Programmation
Marsh Posté le 19-06-2007 à 12:37:02
Probleme de conception : java est fait pour avoir la structure MVC.
Ton listener fait partie de ton controleur et la fenetre de ta vue. Tu n'as normalement pas de probleme de melange a ce niveau. java fournis peut d'outils de facon a "forcer" le programmeur a faire quelque chose de propre, profites en
Marsh Posté le 19-06-2007 à 12:58:58
Si j'ai bien compris c'est l'outils de creation graphique qui reconstruit la classe de bout en bout quand on modifie le viseul, et donc ecrase un eventuel code qu'on aurait ajouté dans ladite classe.
Le truc c'est que ce code devrait se trouver dans le controleur et non la vue.
Marsh Posté le 19-06-2007 à 12:59:14
deadalnix a écrit : java est fait pour avoir la structure MVC. |
et depuis quand ?
(sinon, regarde si ton editeur graphique permet d'ajouter du code)
(Uhm, c'est quoi comme editeur en passant ?)
Marsh Posté le 19-06-2007 à 13:02:55
zapan666 a écrit : et depuis quand ? |
http://java.sun.com/products/jfc/t [...] hitecture/
C'est sun qui le dit pas moi
Marsh Posté le 19-06-2007 à 13:37:07
deadalnix a écrit : Si j'ai bien compris c'est l'outils de creation graphique qui reconstruit la classe de bout en bout quand on modifie le viseul, et donc ecrase un eventuel code qu'on aurait ajouté dans ladite classe. Le truc c'est que ce code devrait se trouver dans le controleur et non la vue. |
Oui c'est ca l'outils de creation graphique (qui est QT designer en passant) reconstruit la classe. Sinon a part ca, c'est quoi le controleur et la vue? J'ai deja fait un peu de java, mais ces termes ne me disent rien.
L'UI ne construit que la classe. C'est a moi ensuite de créer les méthodes et les connecter ensuite au signaux de l'interface graphique.
Donc forcément si l'UI reconstruit la classe il écrase le fichier précédent et le code que j'y ai ajouté.
Marsh Posté le 19-06-2007 à 13:38:47
deadalnix a écrit : http://java.sun.com/products/jfc/t [...] hitecture/ |
Citation : A Swing Architecture Overview |
Swing != Java
Marsh Posté le 19-06-2007 à 13:48:02
L'idée de la classe fille me parait intéressante.
Pour mon probleme, ca me semble simple pourtant .
Moi j'ai appris a coder une classe en faisant classe= attributs privées + méthodes publiques. J'y ajoute des classes internes pour la gestion d'évenements.
L'UI génère la classe sans la gestion d'évènements. Moi je rajoute ce code.
Hop j'ai oublié de rajouter un ptit logo a ma fenetre (par ex), je revais dans mon UI je rajoute ca vite fait. Je save et génère le code associé a cette nouvelle interface.
Et paf ca m'écrase mon ancien fichier, celui où j'ai rajouté mon code de gestion d'évenements.
A moins d'enregistrer le nouveau fichier sous un nom différent et de reprendre le code de gestion d'évenments et le recoller dedans... Mais cette manip me gêne sur le long terme. Perte de temps, et risques
d'erreurs...
Voila j'espere avoir été plus clair
Marsh Posté le 19-06-2007 à 14:08:20
Je ne suis pas sûr à 100% qu'on s'en serve comme ca. Ptet qu'on est censé avoir fini la partie graphique à 100% avant d'attaquer le code, ce qui rendrait plus logique l'utilisation.
Mais dans mon cas je tatonne vu que je ne connais pas tres bien cette librairie (je débute). La classe est purement graphique oui. QT est fait pour ca: rendre indépendant de l'implémentation derriere, si j'ai bien compris.
Mettre les listeners une couche plus bas, tu sous-entends une classe fille donc? Je vais essayer ca.
Marsh Posté le 19-06-2007 à 17:49:34
welcominh a écrit : J'y ajoute des classes internes pour la gestion d'évenements. |
Le voila ton soucis, tu sepra pas la vue et le controleur.
Le mvc (modele vue controleur) c'est une architecture dans ton programme.
Ton modele designe les données, les objets agissant dans ton programme. Il est distinc de la vue et du controleur.
La vue, c'est la peinture. C'est une couche qui sert a afficher les elements de ton modele.
Le controleur, c'est les interactions utilisateur.
Ce modele permet de dissocier les morceau important de ton programme, c'est par exemple grace a ca que des jeu peuvent marcher en directX et openGL, ou bien que l'on peut changer l'interface/l'ergonomie d'un programme sans tout recoder dedans.
Ca me parrait quand meme tres etrange que le programme qui dessine la fenetre efface toute la classe a chque coup. Meme si le code ne devrait pas se trouver ici, c'est vachement etrange.
zapan666 > Bin forcement si tu fait pas une appli graphique je vois pas pourquoi tu t'embete avec une vue et un controleur. mais franchement, jouer sur les mots comme ca ca sert pas a grand chose.
Et (anticipation) je sait qu'on est aps obligé de faire une interface swing en java, mais la aussi . . .
Marsh Posté le 20-06-2007 à 09:31:50
deadalnix a écrit : Ca me parrait quand meme tres etrange que le programme qui dessine la fenetre efface toute la classe a chque coup. Meme si le code ne devrait pas se trouver ici, c'est vachement etrange. |
Merci beaucoup pour tes explications deadalnix, tu éclaires beaucoup ma lanterne sur le modele MVC, que j'utilisais déjà plus ou moins (disons moins ) dans mes applis.
La méthode de la classe fille qui implémente les listener sépare bien vue et controleur, si j'ai bien compris. Après niveau rigueur de codage, j'en suis bien moins sur mais si vous avez une autre méthode je suis preneur.
Pour en revenir a la citation, QT designer ne génère pas de code petit à petit. (Par ex je programme sous Eclipse, je rajoute un élement graphique avec disons Visual Editor et ca me rajoute les bons bouts de code au bon endroit. Apparemment QT designer ne fonctionne pas comme ca, si c'est à ca que vous faisiez allusion).
En fait je ne fais que "dessiner" mon interface. Nulle part question de code. Ce n'est qu'a la fin, quand j'ai fini, que je fais Fichier > save. Ca me sauvegarde dans un fichier d'extension ".ui". Et la il faut que je compile ce fichier avec l'utilitaire "JUIC" de QT pour obtenir un fichier ".java".
Marsh Posté le 20-06-2007 à 10:32:06
Le listener écoute un signal envoyé par l'interface graphique. L'interface graphique c'est juste du "dessin" et des signaux.
La classe mère c'est juste du dessin, que du dessin.
Marsh Posté le 19-06-2007 à 12:31:01
Bonjour a tous,
je suis actuellement en stage. Je programme un logiciel mais l'interface graphique est entièrement fait avec une libraire graphique (QT) et avec un éditeur graphique.
J'implémente actuellement les méthodes appelées par les listeners. Mais j'aimerais pouvoir les implémenter dans un fichier séparé, car le fichier java qui contient la
classe est écrasé a chaque fois que je veux modifier l'interface graphique.
Est-ce possible d'implémenter en dehors de ce fichier?
Merci pour votre aide
Message édité par welcominh le 19-06-2007 à 12:31:32
---------------
Direct-download.com, le moteur de recherche pour Mega