Interface, interface, classe anonyme et énumération
Exercice 1 - Vive l'europe, les plaques changent.
Et oui l'europe c'est l'harmonie. Même les plaques d'immatriculations changent.
Le nouveau format des plaques d'immatriculations sera :
AA 111 AA
(2 lettres maximum / 3 chiffres maximum / 2 lettres maximum)
-
Dans un premier temps proposez une nouvelle implémentation de la classe NumberPlate
nommée EuropeanNumberPlate.
-
En fait, on souhaite pouvoir gérer la transition, c-a-d avoir un park de
voiture pouvant possèder des plaques à l'ancienne norme ou
à la nouvelle.
Comment doit-on modifier Car,
NumberPlate et EuropeanNumberPlate ?
-
Implémenter la solution retenue.
-
On souhaite pouvoir créer des plaques d'immatriculation
en utilisant une méthode possèdant un paramétre de type boolean permettant
de créer des plaques de l'ancien ou du nouveau type.
Indiquer quel est le profil de cette méthode ?
Dans quelle classe doit-on mettre cette méthode ?
Exercice 2 - Manipulation de fichier.
Dans cette exercice on propose de d'utiliser le pakage
java.io. Ce pakage contient une serie de classe qui
permettent de manipuler les entrées sorties, les fichiers ainsi
que la serialisation.
-
Affichez les fichiers et répertoires d'un repertoire en utilisant la
classe java.io.File,
penser à lire la documentation de java.io.File.
-
La méthode listFiles() est surchargée,
rappelez ce que cela veut dire.
-
Quelle est la différence entre les classes
java.io.FileFilter et java.io.FilenameFilter
-
Affichez les fichiers d'un repertoire dont le nom commence
par une chaîne pris en paramétre en utilisant un filtre.
-
Faire la même chose en utilisant une classe anonyme
à la place d'une classe "top-level".
-
Affichez récursivement l'ensemble des fichiers et répertoire
à partir d'un repertoire donné.
Attention à ne pas allouer trop d'objets inutilement.
-
Ècrire une méthode listFile(File,FileFilter) en utilisant
la méthode File.listFile(FileNameFilter) de java.io.File.
On appel qu'il existe un constructeur
File(File directory, String name).
Exercice 3 - Avec style
On souhaite pouvoir écrire des textes de façon marrante sur la console.
On définie pour cela la méthode :
String stylify(String text,int flags)
L'entier flags indique la façon dont le texte
doit s'afficher.
Avec le texte toto
-
STAR affiche t*o*t*o
-
REVERSE affiche otot
-
REVERSE|STAR affiche o*t*o*t
-
Déclarer STAR et REVERSE comme des constantes entières.
-
Ecrire la méthode stylify.
-
Quel est l'intérêt de remplacer les constantes par une
énumération ?
Transformer les constantes en énumération et modifier la méthode
stylify en conséquence.
Note : Vous pouvez regarder la documentation de la classe EnumSet.
-
Ajouter une méthode applyStyle dans l'énumération.
Quel est l'intérêt de ce design ?
Changer le code de stylify en conséquence.
-
Ajouter un flag BANG qui affiche le texte toto
comme ceci t!o!t!o.
Partagez le code au maximum !
En cas de STAR/BANG, le STAR
devra être traité d'abord (le résultat est alors t!*!o!*!t!*!o).
-
Que doit-on modifier pour pouvoir choisir si l'on veut
faire un STAR avant ou après un BANG
dans le cas d'un STAR/BANG ?
L'astuce consiste à utiliser un ensemble qui conserve l'ordre
d'insertion.
Rémi Forax - Université de Marne La Vallée