Les diff´erentes m´ethodes associ´ees aux classes String et StringBuffer sont
disponibles dans l’aide g´en´erale du langage Java sur http://java.sun.com/j2se/1.5.0/docs/a
La liste des classes est dans la partie inf´erieur gauche de la page internet.
L’impl´ementation en Java n´ecessite quelques pr´ecautions, l’op´erateur modulo
(repr´esent´e par les symbole %) n’a pas le comportement voulu (voir le d´etail sur
http://fr.wikipedia.org/wiki/Modulo %28informatique%29).
La m´
ethode int Modulo(int x, int y) Comme le modulo calcul´e par Java n’a
pas le comportement voulu, vous allez ´ecrire une m´ethode permettant de calculer
“le bon” modulo. La m´ethode int Modulo(int x, int y) renvoie le modulo de x
divis´e par y. Le modulo calcul´e par l’op´erateur %est le bon si il est positif.
Si le modulo calcul´e par l’op´erateur %est n´egatif votre fonction doit renvoyer y
+ x%y.
La m´
ethode String getCryptedText() Cette m´ethode renvoie l’attribut destination.
1.6 La classe DecodeCesar
Elle est identique `a la classe pr´ec´edente sauf qu’elle d´ecode la chaˆıne d´esign´ee
par l’attribut source et place la version d´ecod´ee dans l’attribut destination.
A partir du sch´ema UML et du travail fait ci-dessus, ´ecrivez la classe DecodeCesar
1.7 Test de vos deux classes
La fonction main de votre classe de test doit avoir deux variables de type Cryptage.
Ces deux variables seront nomm´ees moteurCryptage et moteurDecryptage. Il n’y
a pas d’erreur, le type de ces deux variables est bien une interface.
Cr´eez ensuite pour moteurCryptage un objet de type EncodeCesar avec une
valeur de d´ecalage de 5 (par exemple) et cr´eez pour moteurDecryptage un objet de
type DecodeCesar avec le mˆeme d´ecalage.
Demandez ensuite `a l’utilisateur de donner une chaˆıne de caract`ere (en utilisant
la m´ethode nextLine() d’un objet de type Scanner).
Affichez la chaˆıne encod´ee.
D´ecodez la chaˆıne et affichez le r´esultat.
1.8 Les classes DecodeVigenere et EncodeVigenere
Le codage de Vigen`ere est plus efficace que le codage de C´esar. Il est pr´esent´e
dans http://fr.wikipedia.org/wiki/Chiffre de Vigen%C3%A8re. Par rapport
au codage de C´esar, il n´ecessite une clef de cadage (une chaˆıne de caract`ere), qui
permet de calculer un d´ecalage variable contrairement au code de C´esar.
Exemple La clef de codage est le mot clef et le texte `a encoder est Linux. Une
m´ethode possible est bas´ee sur le calcul de l’ecart entre une lettre de la clef et la
lettre ’a’. Dans notre cas, les ´etapes de codage sont les suivantes :
– La lettre Lsera cod´ee avec un d´ecalage valant ’c’-’a’
3