1. Fonctionnement de l’application
Cette application exemple doit demander une entrée au format texte, la traiter et restituer un résultat. Elle est capable d’effectuer les traitements:- Addition de deux entiers.
- Multiplication de deux entiers.
- Conjuguaison d’un verbe du 1er groupe au présent de l’indicatif.
2. Conception de l’application
En vertu du principe de la séparation des traitements et de la présentation il y aura une partie présentation et une autre de traitement. La partie présentation est simple dans notre cas, elle ne sera constituée que par un seul module. Toutefois, la partie traitement comporte deux types de traitements:- Le calcul, qui sera constitué par un module.
- La conjugaison, qui sera constitué par un autre module.
- Module principal qui prend en charge l’interface utilisateur: net.mtuto.superprocess
- Module de répartition: net.mtuto.repartition
- Module de calcul: net.mtuto.clacul
- Module de conjugaison: net.mtuto.conjugaison
3. Le module conjugaison
Ce module sera composé de deux packages:- net.mtuto.conjugaison.facade: joue le rôle d’interface et contient une classe unique Conjuguer
- net.mtuto.conjugaison.traitement: contient les détails des traitements, effectués par la classe Groupe1
mkdir -p application/spmodules/conjugaison/src/net/mtuto/conjugaison/facade mkdir -p application/spmodules/conjugaison/src/net/mtuto/conjugaison/traitement cd application/spmodules/conjugaison vi src/net/mtuto/conjugaison/facade/Conjuguer.javaSaisir dans l’éditeur de texte le contenu de ce fichier de classe:
package net.mtuto.conjugaison.facade; import java.util.*; import net.mtuto.conjugaison.traitement.Groupe1; public class Conjuguer { public List<String> groupe1pind(String verbe) { Groupe1 g1 = new Groupe1(); return g1.presentind(verbe); } }Suite à cela, enregistrer et quitter, ensuite créer de la même manière la classe de traitement:
vi src/net/mtuto/conjugaison/traitement/Groupe1.javaSaisir dans l’éditeur de texte le contenu de ce fichier de classe:
package net.mtuto.conjugaison.traitement; import java.util.*; public class Groupe1 { public List<String> presentind(String verbe) { String racine = verbe.substring(0, verbe.length() - 2); List<String> r = new ArrayList<String>(); r.add("Je " + racine + "e"); r.add("Tu " + racine + "es"); r.add("Il " + racine + "e"); r.add("Nous " + racine + "ons"); r.add("Vous " + racine + "ez"); r.add("Ils " + racine + "ent"); return r; } }Après l’enregistrement de ce fichier de classe, on crée le descripteur du module:
vi src/module-info.javaLe contenu de ce fichier doit être:
module net.mtuto.conjugaison { exports net.mtuto.conjugaison.facade; }Après avoir fini avec la création de ces trois fichiers sources, on peut construire le module dans application/spmodules/conjugaison.jar:
mkdir classes javac -d classes src/module-info.java src/net/mtuto/conjugaison/facade/Conjuguer.java src/net/mtuto/conjugaison/traitement/Groupe1.java jar --create -M --file ../conjugaison.jar -C classes/ .
4. Le module calcul
Ce module sera composé, en plus du descripteur, par 3 classes:- net.mtuto.calcul.facade.Calculer
- net.mtuto.calcul.traitement.Addition
- net.mtuto.calcul.traitement.Multiplication
package net.mtuto.calcul.facade; import net.mtuto.calcul.traitement.Addition; import net.mtuto.calcul.traitement.Multiplication; public class Calculer { public String addition(String opAddition) { Addition addition = new Addition(); String[] parties = opAddition.split(" "); int a = Integer.parseInt(parties[0]); int b = Integer.parseInt(parties[2]); return addition.additionner(a,b).toString(); } public String multiplication(String opMultiplication) { Multiplication multiplication = new Multiplication(); String[] parties = opMultiplication.split(" "); int a = Integer.parseInt(parties[0]); int b = Integer.parseInt(parties[2]); return multiplication.multiplier(a,b).toString(); } }Addition.java:
package net.mtuto.calcul.traitement; public class Addition { public Integer additionner(int a, int b) { return a + b; } }Multiplication.java:
package net.mtuto.calcul.traitement; public class Multiplication { public Integer multiplier(int a, int b) { return a * b; } }module-info.java:
module net.mtuto.calcul { exports net.mtuto.calcul.facade; }Une fois ces quatre fichiers sources crées, on peut construire le module dans application/spmodules/calcul.jar:
mkdir classes javac -d classes src/*.java src/net/mtuto/calcul/facade/*.java src/net/mtuto/calcul/traitement/*.java jar --create -M --file ../calcul.jar -C classes/ .
5. Le module repartition
Ce module sera composé par le descripteur et une seule classe: net.mtuto.repartition.facade.Repartiteur Pour le créer, il convient de procéder comme pour le module conjugaison: créer les dossiers puis les fichiers de chacun de ces éléments. Les contenus doivent être: Repartiteur.java:package net.mtuto.repartition.facade; import java.util.*; import net.mtuto.conjugaison.facade.Conjuguer; import net.mtuto.calcul.facade.Calculer; public class Repartiteur { public List traiter(String txt) { List r = new ArrayList(); String[] parties = txt.trim().split(" "); if (parties.length == 1) { if (parties[0].length()>2 && parties[0].toLowerCase().substring(parties[0].length()-2, parties[0].length()).equals("er")) { Conjuguer c = new Conjuguer(); r = c.groupe1pind(txt); } else r.add("Impossible de traiter les données fournies"); } else if (parties.length == 3) { int a = -1; int b = -1; try { a = Integer.parseInt(parties[0]); b = Integer.parseInt(parties[2]); } catch (NumberFormatException nfe) { a = -1; b = -1; r.add("Impossible de traiter les données fournies: l'un des arguments numériques est faux ou négatif"); } if (a>=0 && b>=0 && (parties[1].equals("+") || parties[1].equals("x"))) { Calculer c = new Calculer(); if (parties[1].equals("x")) r.add(c.multiplication(txt)); else r.add(c.addition(txt)); } else r.add("Impossible de traiter les données fournies"); } else r.add("Impossible de traiter les données fournies"); return r; } }module-info.java:
module net.mtuto.repartition { exports net.mtuto.repartition.facade; requires net.mtuto.calcul; requires net.mtuto.conjugaison; }Après la création de ces deux fichiers sources, on procède à la construction du module dans application/spmodules/repartition.jar:
mkdir classes/ javac --add-modules net.mtuto.conjugaison,net.mtuto.calcul -p ../ -d classes src/module-info.java src/net/mtuto/repartition/facade/Repartiteur.java jar --create -M --file ../repartition.jar -C classes/ .]]>