:: Enseignements :: ESIPE :: E4INFO :: 2007-2008 :: Java Avancé ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Type énuméré, generics, varargs, boxing |
Exercice 1 - Avec style
On souhaite pouvoir écrire des textes de façon marrante sur la console.
On définit 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
en sachant quelle
doit pouvoir accepter d'appliquer plusieurs style en même temps.
Exemple d'utilisation :
stylify("toto",REVERSE|STAR);
-
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
BANG
/
STAR
, 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 à passer en argument de la méthode
stylify
un ensemble qui conserve l'ordre
d'insertion de ses élements.
Exercice 2 - Minimum
On souhaite pouvoir écrire le code suivant :
System.out.println(min(3,12)); // affiche 3
System.out.println(min(4,2,3)); // affiche 2
-
Quel est le profil de la méthode
min
?
-
Comment faire pour que l'appel
min()
sans argument
soit invalide ?
-
Écrire le code correspondant.
Exercice 3 - Pile efface
Toutes les classes écrites lors de cette exercice doivent se trouver dans le
paquetage
fr.umlv.util.stack
.
-
Écrire la classe
fr.umlv.util.stack.FixedStack
possèdant les méthodes :
-
boolean isEmpty()
qui indique si la pile est vide.
-
push(Object o)
qui empile une valeur
-
Object pop()
qui dépile une valeur
On considera la pile comme possèdant une capacité maximale
fixée lors de la création de l'objet
FixedStack
.
Rappeler ce qu'est une fuite de mémoire (
memory leak
)
dans le cas général puis en Java.
Vérifier que votre implantation de
pop
ne crée pas
de fuite de mémoire.
© Université de Marne-la-Vallée