L'interfaçage est la partie du programme qui va faire le lien entre les différents modules.
10.1 Organisation
Clé de voute du programme, elle doit faire l'objet d'une attention particulière afin que l'exécution combinée des différentes parties corresponde bien à leur exécution séparée. C'est pourquoi le module d'interfaçage a été séparé au maximum de la partie Interface Homme-Machine, grâce au paradigme de programmation Modèle-Vue-Contrôleur . Ce module correspond donc à la partie modèle de cette approche de programmation.
10.2 Réalisation
Le package Interfacage est composé de deux classes : MiniJaja et EtatAppli.
10.2.1 La classe MiniJaja
Cette classe gère l'interfaçage à proprement parler. Elle comporte différents états :
-
ETAT_DEPART : l'état dans lequel se trouve l'application lorsque rien n'a encore été fait.
- ETAT_COMPILATION : l'état dans lequel se trouve l'application lorsque la compilation est en train de se faire.
- ETAT_PARSING_OK : l'état dans lequel se trouve l'application lorsque la compilation a réussie.
- ETAT_INTERPRETATION_JJC : l'état dans lequel se trouve l'application lorsqu'elle est en train d'interpréter le JajaCode.
- ETAT_INTERPRETATION_MJJ : l'état dans lequel se trouve l'application lorsqu'elle est en train d'interpréter le MiniJaja pas à pas.
- ETAT_INTERPRETATION_MJJ_PTS_ARRET : l'état dans lequel se trouve l'application lorsqu'elle est en train d'interpréter le JajaCode avec points d'arrêt.
- ETAT_REDEMARRE_INTERPRETATION_JJC : l'état dans lequel se trouve l'application lorsque l'interprétation du JajaCode à été réinitialisée.
- ETAT_REDEMARRE_INTERPRETATION_MJJ : l'état dans lequel se trouve l'application lorsque l'interprétation du MiniJaja à été réinitialisée.
Lorsque l'utilisateur effectue une action sur l'IHM, celle-ci envoie
une demande de changement d'état à la classe d'interfaçage via la
méthode setEtat(). Si le changement d'état est possible, les
traitements idoines sont exécutés, et l'application change d'état
s'ils ont réussi.
10.2.2 La classe EtatAppli
Nous avons vu que l'IHM est multi-documents, c'est-à-dire que plusieurs espaces de travail peuvent être ouverts. Il fallait donc cloisonner les données pour que les différents espaces de travail ne travaillent pas sur les mêmes objets. C'est le rôle de cette classe, qui va permettre de stocker les données devant être préservées, et notamment l'état dans lequel se trouve l'interfaçage de l'espace de travail actif. Ainsi, la classe MiniJaja comporte un vecteur d'objets de type EtatAppli. Le processus est le suivant :
-
lorsqu'un nouvel espace de travail est créé par l'utilisateur, l'IHM déclenche la fonction MiniJaja.creeEtat(), qui va instancier un nouvel objet EtatAppli.
- lorsque l'utilisateur change d'espace de travail, les données de
l'espace de travail qu'il vient de quitter sont sauvegardées via la
fonction MiniJaja.sauveEtat(), et les données de l'espace de
travail dans lequel il vient d'entrer sont rechargées via la
fonction MiniJaja.chargeEtat().
- lorsque l'utilisateur ferme un espace de travail, les données de
l'espace de travail qu'il vient de fermer sont supprimées par la
fonction MiniJaja.removeEtat(), et les données de l'onglet
selectionné par Java sont chargées.
10.3 Jeux de test
L'interfacage et l'IHM étant intimement liées, non pas au niveau du code mais en termes de fonctionnement, les jeux de test décrits dans la section concernant l'IHM tiennent également lieu de tests pour l'interfaçage.