Unité IN3S02 - TP4
Enoncé
Durée : 3 h
1- OBJECTIFS
2- TRAVAIL A REALISER
Nota : le travail demandé doit être terminé, en séance ou en hors séance.
2.1- Créer un répertoire de
travail
2.2- Découvrir l'outil de mise au point (debugger)
Lors de la mise au point d'un programme, il est essentiel de pouvoir visualiser les valeurs des variables mises en oeuvre et leur évolution. C'est ce que permet l'outil de mise au point (debugger) intégré dans BlueJ. Cet outil offre les fonctionnalités fondamentales de tout debugger : installation de points d'arrêt, exécution du programme pas à pas (i.e. instruction par instruction), consultation du contenu des variables.
2.2.0- Préparer l'environnement de travail
Lancer BlueJ et charger le projet debugdemo qui se trouve dans le répertoire .../bluej/examples
Afin de ne pas modifier l'original de ce projet, nous allons travailler sur une copie : enregistrer ce projet dans le répertoire IN3S02-tp4, créé préalablement, sous le nom debugdemo2
2.2.1- Découvrir l'outil de mise au point
Le petit projet debugdemo2a pour
seul
objectif d'aider à présenter les fonctionnalités
de l'outil de mise au point.
Il n'a pas de sens en lui même.
Editer la classe Demo, en
prendre connaissance, et la compiler. Poser un point d'arrêt sur
la boucle for de
la méthode loop
en cliquant dans la colonne de gauche de l'éditeur du texte
à hauteur de la
ligne for (le
point
d'arrêt est posé quand apparaît une icône
rouge stop à cet endroit). Créer un
objet de la classe Demo et
appeler la méthode loop avec
un paramètre de valeur 10. Dès que le point d'arrêt
est atteint, la fenêtre
d'édition contenant la ligne courante apparaît, suivie par
la fenêtre de mise
au point :
Poursuivre
l'exécution en pas à
pas en activant le bouton Step de la
fenêtre de mise au point : on peut
suivre l'avancement de l'exécution instruction par instruction
dans la fenêtre
d'édition et l'évolution des valeurs des variables dans
la fenêtre de mise au
point. On peut notamment remarquer l'apparition d'une nouvelle variable
locale
: le compteur de boucle i, qui est une variable locale à la
boucle et qui donc
n'avait / n'aura pas d'existence en dehors de la boucle.
Nota 1. Autres commandes de l'outil de mise au point :
Nota 2. L'exécution d'un programme peut parfois sembler bien longue, au point que la question de son bon fonctionnement peut se poser. Il est possible à tout instant d'interrompre l'exécution d'un programme en activant automatiquement le debugger. Pour cela, il suffit de : 1) cliquer sur la barre en rotation dans la fenêtre principale de BlueJ (la rotation de cette barre signale que la machine virtuelle Java travaille, c'est-à-dire qu'un programme est en cours d'exécution) ; 2) dans la fenêtre de mise au point qui apparaît, cliquer sur le bouton Halt / Stop.
2.3- Exercice : projet "weblog-analyzer"
Les serveurs web maintiennent habituellement des fichiers d'historique des accès aux pages web qu'ils supportent. Ces fichiers sont appelés fichiers log. L'analyse de ces fichiers permet d'obtenir des informations utiles comme : quelles sont les pages les plus consultées, quelles sont les périodes de consultation les plus chargées, ... . Le projet weblog-analyzer sur lequel nous allons travailler est un programme qui réalise une analyse élémentaire d'un fichier log simplifié. C'est dans ce cadre que nous créerons et gérerons des tableaux.
2.3.0- Préparer l'environnement de travail
Créer
un répertoire weblog-analyzer
dans
le répertoire temporaire C:/Temp/IN3S02-tp4.
Hors BlueJ,
charger le fichier weblog-analyzer.zip lié à cet
énoncé (cliquer sur le
lien), et l'enregistrer sous ce nom dans le répertoire IN3S02-tp4/weblog-analyzer.
Ouvrir le fichier IN3S02-tp4/weblog-analyzer/weblog-analyzer.zip.
Il contient quatre fichiers sources java ( LogAnalyzer.java, LogEntry.java,
LogfileReader.java et LogLineTokenizer.java)
et un fichier texte (weblog.txt).
Les en extraire (bouton Extract) et les
enregistrer
dans le répertoire IN3S02-tp4/weblog-analyzer
Dans BlueJ, fermer s'il y a lieu le projet debugdemo2 de l'exercice précédent, et ouvrir, en tant que projet non Bluej, le répertoire IN3S02-tp4/weblog-analyzer (et non IN3S02-tp4/weblog-analyzer/weblog-analyzer.zip !!) [ menu Project, choix Open Non BlueJ ... , en veillant à bien rester à l'extérieur du répertoire weblog-analyzer et à ne pas y descendre].
2.3.1- Prendre connaissance du projet weblog-analyzer
Le projet weblog-analyzer est composé de 4 classes. Nous nous intéresserons essentiellement à la classe LogAnalyzer. Ce programme réalise une analyse temporelle d'un petit fichier log.
Le fichier log analysé par ce projet est un fichier log simplifié. Nommé weblog.txt, il se trouve maintenant dans le répertoire IN3S02-tp4/weblog-analyzer2.Il contient une suite de dates au format "année mois jour heure minute", chaque ligne étant censée correspondre à un accès à une page web du serveur. Visualiser le contenu de ce fichier et en prendre connaissance.
Editer et prendre connaissance de la classe LogAnalyzer. La méthode analyzeHourlyData compte combien d'accès ont été réalisés dans chaque tranche horaire pendant toute la durée couverte par le log. Le résultat est mémorisé dans le tableau hourCounts.
Créer un objet de la classe LogAnalyzer et exécuter la méthode analyzeHourlyData puis la méthode printHourlyCounts. Quels sont les moments les plus chargés et les moins chargés d'une journée ?
2.3.2- Etendre la classe LogAnalyzer
On se propose d'ajouter
à la
classe LogAnalyzer
de nouvelles méthodes d'analyse. Aucune de ces méthodes
ne devra comporter
d'instruction d'affichage.
Supposons que le tableau hourCounts suivant :
Elément
45
12 8 72
45 3 75
80 10 12
33
80
Indice
0 1
2 3
4 5
6
7 8
9 10 11
Le résultat de rankHours serait le tableau suivant :
Elément
7 11 6
3 0 4
10 1 9
8 2 5
Indice
0 1 2
3 4 5
6 7 8
9
10 11
2.3.3- Terminer l'exercice
Sauvegarder le projet weblog-analyzer et le fermer.
2.4- Terminer la séance
Si pas fait antérieurement, sauvegarder les projets ouverts, puis fermer BlueJ.
Si besoin, envoyer par mél à votre binôme, en fichiers attachés, tous les programmes *.java développés sous IN3S02-tp4.
Se déloger.