:: Enseignements :: ESIPE :: E4INFO :: 2010-2011 :: Java Avancé ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Type énuméré, generics, varargs, boxing |
Vous trouverez
ici
quelques notes concernant ce td.
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 :
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 styles en même temps.
Exemple d'utilisation :
-
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
BANG
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 :
-
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.
-
Générifier la classe
fr.umlv.util.stack.FixedStack
en expliquant pourquoi il n'est pas possible de créer un
tableau de
E
.
© Université de Marne-la-Vallée