Paquetage, structure de données de base
Exercice 1 - Evaluateur d'expression (suite)
Le but de cet exercice est de bien comprendre la notation
de paquetage.
Reprennez l'ensemble des classes de l'évaluateur d'expression
et faites en sorte qu'elles appartiennent au paquetage
fr.umlv.evaluator.
On supposera que par défaut les sources de l'évaluateur sont
stockées dans un répertoire nommé src.
-
Créer un répertoire "fr" dans le répertoire "src",
puis un répertoire "umlv" à l'intérieur du répertoire "fr"
et enfin un répertoire "evaluator" à l'intérieur du
répertoire "umlv".
Déplacer l'ensemble des codes sources (.java) dans
le répertoire "fr/umlv/evaluator"
-
Insérer dans chaque fichier, en tant que première ligne
la ligne suivante package fr.umlv.evaluator
-
Compiler l'ensemble des classes en se plaçant dans le répertoire
père de "fr" avec la commande suivante :
javac fr/umlv/evaluator/*.java
-
Exécuter le "Main" à partir du même répertoire
-
Créer un répertoire classes de tel sorte que
src soit son frère.
Supprimer les fichier ".class" des sous-répertoire de "src"
Utiliser l'option "-d" du compilateur pour indiquer au compilateur
qu'il faut générer les ".class" dans le répertoire "classes".
Exécuter la classe "fr.umlv.evaluator.Main"
-
A quoi sert la variable d'environnement CLASSPATH ?
Exercice 2 - Directive import
Le but est de voir à quoi sert la directive import.
On souhaite que la classe fr.umlv.evaluator.Main soit
renommée en fr.umlv.evaluator.test.Main.
-
Créer le répertoire nécessaire.
-
Déplacer la classe Main dans celui-ci et faites en sorte que
cela compile.
-
Quelle est la différence entre "import" en Java et
"include" en C ?
Exercice 3 - Les listes chaînées
Le but est voir comment coder en Java les structures
de données habituelles.
Pour la suite de l'exercice, l'ensemble des classes créées
devra être créé dans le paquetage fr.umlv.datas.
Nous allons dans un premier temps, créer une liste chaînée de
chaîne de caractères.
-
Créer une classe fr.umlv.datas.Link correspondant à un
maillon de la liste chaînée.
-
Créer une classe fr.umlv.datas.LinkedLink qui maintient
une référence sur le premier maillon de la liste.
Cette classe devra définir les méthodes :
-
add(String text) qui ajoute un élément
avant le premier élément.
-
size() qui affiche le nombre d'éléments de
la liste.
-
toString() qui affiche le contenu de
la liste.
-
Ecrire dans la classe fr.umlv.datas.Main,
main permettant de tester les différentes méthodes.
-
Implanter String get(int index) qui renvoie la
indexième chaîne de caractère.
Que doit-on faire si l'index est invalide ?
Pourquoi serait-il logique de changer l'implantation de
size pour que la méthode s'exécute en temps constant ?
Ré-implanter size.
-
Changer la classe fr.umlv.datas.LinkedLink
pour une implantation plus générique à base d'Object.
Que doit-on changer dans la classe fr.umlv.datas.Main ?
-
Implanter la méthode boolean contains(Object o) indiquant si un objet
est où non contenu dans la liste chaînée.
Rémi Forax - Université de Marne La Vallée