Programme JAVA

Ca fait quelques temps que je suis sur un programme d’analyse Merise
(MCD, MLD, … pour ceux qui connaissent) et j’arrive enfin à faire
tourner quelques choses de correct. C’est en GPL, écrit en Java (dsl
GloP mais lejava caibon, mengézen). Si ca vous dit de le tester et de me
dire ce que vous en pensez.
Par la suite, je compte l’améliorer en
générant le code SQL à partir du MLD pour créer automatiquement les
tables et à exécuter ce code sur une base ODBC.

Si ca intéresse quelqu’un, ca se trouve au : http://zgoblin.free.fr/Analyse.tar.gz.

Pour toutes questions sur le code, y’a pas de problème.

PS: Attention, certaines parties du code sont programmées avec les pieds, ne pas en tenir compte.

[Edit]Ho les fautes[/Edit]
Ce message a été édité par ZGoblin le 07/05/2003

Même très correct je trouve, j’ai pas eu un seul plantage :-p

c’est pas mal du tout, ça répond bien (bon ok, j’ai un bon pc), j’ai juste 2 petites questions :slight_smile: (pas de codes, mais d’analyse :-p )

Pourquoi on peut pas modifier un élément du dictionnaire qu’est utilisé ?

Et pourquoi ne pas avoir fait un dictionnaire par entités, plutôt qu’un global qui risque de devenir un rien « encombré » au bout d’un moment ?

[quote]j’ai pas eu un seul plantage :-p[/quote] Normal, c’est programmé en Java (idem pour le C#), plus de
segfault mais juste des exceptions qui sont faciles à détecter, à
comprendre et à corriger.

Pour ce qui est du dictionnaire, tous le softs traitant de merise
avaient un dictionnaire global. D’ailleur lors des TD d’analyse
(lorsque j’y allais, ce qui était rare), on faisait d’abord une liste
de toutes les infos possibles et ensuite on les regroupait. Ce qui
correspond au mode de fonctionnement de mon application. Et puis un
dictionnaire par entité, ca complique pas mal, même si, Access le traite plutot
de cette manière, je vais réfléchir à la question.

Pour la dernière remarque, je bloque le dictionnaire pour simplifier
aussi, cela permet de ne pas devoir supprimer les informations dans les
entités à chaque fois qu’on les supprime dans le dictionnaire. Pareil
lorsque l’on veut changer le nom d’une information, il faudrai modifier
les informations dans les entités, ce qui peut être assez chiant coté
Prog. Mais je suis d’accord avec toi que ca pourrait être pratique de
modifier le type ou la taille, ce qui n’a aucune conséquence sur le MCD.

Tes remarques sont intéressantes car je n’avais aborder le
problème que coté merise mais l’approche “access” est différentes et
plus abordable pour la plupart des gens.

Juste une question pour info personnel, tu fais des études
d’informatiques pour connaitre merise ou tu bosses directement la
dedans ?
Ce message a été édité par ZGoblin le 07/05/2003

[quote]Normal, c’est programmé en Java (idem pour le C#), plus de segfault mais juste des exceptions qui sont faciles à détecter, à comprendre et à corriger.

Oui, je sais, je connais la java aussi. Mais j'ai pas vu d'exception (me rappelle plus, ça fait quelques temps maintenant [img]style_emoticons/<#EMO_DIR#>/wink.gif[/img] C'est simplement la méthode que notre prof nous a appris. Pendant l'analyse on extrait les intervenants (client, fournisseur, document, produit...) ce qui nous donne les entités qui vont exister, puis on entre dans les détails en décrivant plus précisément de quoi sont composer les intervenants : ce qui nous donne les informations des entités, avec parfois de nouvelles entités qui apparaissent, et les relations entre tout ce beau monde... (ceci est un gros résumé de la méthode, hein, je prétend pas donner un cours d'analyse en 10 lignes )

[quote]Juste une question pour info personnel, tu fais des études d’informatiques pour connaitre merise ou tu bosses directement la dedans ?
Ce message a été édité par ZGoblin le 07/05/2003
Hem, cela fait déjà plus de 5 ans que je les ai finies mes études, y a pas que les étudiants qui sont geeks  , mais c’est la base de mon apprentissage donc je connais un peu. Alors si t’as d’autres questions, n’hésite pas

[quote] Oui, mais devoir repasser dans toutes les entités
pour enlever l’information que l’on veut modifier, la changer, puis la
remettre partout ou elle était avant… ben c’est pas pratique non plus
niveau utilisateur :wink:

Et puis, avec un bon modèle MVC, le changement d’une information devrait
être répercutée sur toutes les vues qui utilisent la donnée.
Je ne connait pas le modèle MVC, en fait, je crois que l’on utilise
pas du vraiment la même méthode d’analyse pour arriver au même résultat.
Car avec merise une information
ne peut exister que dans une seule entité (pour le MCD). Dans le MLD
(générer à partir du MCD), on retrouve cette fois certaines clé dans
plusieur table selon les relations que l’on a instauré.

Si j’ai rien compris, n’hésite pas à me le dire.

MVC c’est Model View Controller, ca a ete “invente”/applique avec Smalltalk de Xerox PARC (oui oui encore eux)… C’est en gros la division des taches de maniere propres entre les trois entites:

-View: controle l’affichage des donnees (graphique ou texte) dans la zone graphique est associee a l’application - en general sa fenetre
-Controller: la partie responsable d’interpreter les entree de l’utilisateur (clavier/souris/whatever) et de passer des ordres au model, puis de demander le rafraichissement/changement de la couche View (dans le modele passif)
-Model: les donnees et la “buisness logic”, repond aux questions de la couche “view” sur son etat, repond aux demande de changement d’etat depuis la couche controller…

Si on va jusqu’au bout on a 4 classes: View, Controller, Model et Objet et on herite au choix de ces objets selon ce qu’on fait.

Par exemple sur un clone debile de notepad:

Model: une string qui contient le texte
Controller: la classe qui met a jour la string quand tu tapes une touches
View: la classe responsable d’afficher la string

Dans le modele passif le modele est completement independante et ne sais pas qu’il y a une view et un controller. On lui dit de changer, il change. En pratique c’est pas toujours faisable parceque tout les changements que peuvent subir le modele ne viennent pas forcement d’un controller (qui peut demande de mettre a jour la view dans la foulee). Donc il faut un systeme pour garder la liste de dependances pour rester tout synchrone partout… En gros tu associe les view comme etant dependantes d’un model (elle se mettent dans une liste d’objets qui doivent se faire appeller quand le modele change). Une seul modele peut avoir plusieur jeu de controller/view associe, si un seul change qqch, toutes les views sont mises a jour.

Apres on peut developper et raffiner a l’infini mais en gros le principe de base c’est ca et la plupart des systemes un peu complexe suivent ce genre de design pattern, somme toute assez intuitif

Voila j’expliquais juste pour ceux qui connaissaient pas … hop je m’en vais de la discution et je repars tapis dans l’ombre

Merci pour ce cours, ca m’a l’air assez orienté objet comme méthode.
J’ai vraiment l’impression que tu connais tout GloP ! Et j’ai vraiment
l’impression de n’avoir rien appris en 2 ans de DUT Informatique.
La
méthode merise n’a pas du tout cette approche (elle est aussi utiliser
sur du cobol, c’est pourquoi on a droit à un dictionnaire global, dans
le Cobol toutes les variables sont déclarées dans la Working-storage
section au début du programme en bloc).

Je vais étudier cette méthode car elle a l’air bien pratique pour le dev Java ou C# d’applications graphiques.

La plupart des environnements graphiques implementent deja ce modele (en plus ou moins simplifiee/batard selon a qui tu parles) que ca soit win32, MFC, ou les winforms par dessus, ou meme Swing en Java. T’as des evenements, des classes de rendu, des classes de donnees, des classes de gestion des E/S. Connaitre le modele sert surtout a pas partir n’importe ou et a faire un gros truc sale par dessus.

J’avais bien sur fait la relation avec les interfaces actionListener, la Table Swing est aussi un très bon exemple sur ce modèle avec une classe JTable pour l’interface et une classe AbstractTableModel à implémenter pour les données. Comme tu dis, c’est utile pour programmer proprement et non pas au feeling comme dans la plupart des cas.

Ca tombe bien, je voulais faire une console SQL dans mon programme, c’est l’exercice parfait pour utiliser ce design patern.

Oui, c’est évident que si t’es en forme normale, tu ne peux pas avoir redondance d’information.

Mais je me rappelle pas avoir dit de dupliquer, …

Comme nous l’a expliqué très gentillement Glop (l’est trop fort ce glop, au passage, merci je me sentais pas trop capable d’en faire une explication aussi longue, et surtout aussi claire :-p ), dans le MVC y a pas duplication, mais plusieurs façon d’accéder au
données.

Sinon, il est clair que moi non plus j’avais « rien » appris à la fin de mes études. Mais c’est normal, elles ne servent pas à ça, mais à t’apprendre à réfléchir, à analyser surtout, et à penser informatique. Bref les bases.

Après y a plus qu’à apprendre les langages, les systèmes, les outils et ça l’école peut pas le faire, par manque de temps, et puis parce que tu ne sais pas encore dans quoi tu travailleras après (java, C , C++ , C# , php, websrvice, jsp, j2EE, etc…)

Mais ça t’inquiètes pas ça vient très vite, surtout quand tu te concentre sur ce que tu aimes faire :slight_smile:

[quote]Sinon, il est clair que moi non plus j’avais “rien” appris à la fin de mes études. Mais c’est normal, elles ne servent pas à ça, mais à t’apprendre à réfléchir, à analyser surtout, et à penser informatique. Bref les bases.[/quote]Euh, je viens avec ma petite voix pour dire que sisi, on y a eu droit au design pattern MVC à l’école… Nan, je dénoncerai personne  Par contre pour le reste, je suis carrément d’accord, et GloP aussi je pense.