Unité IN3S02 - TP5
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
Créer un répertoire IN3S02-tp5 à la racine de votre compte. C'est dans ce répertoire que devront être stockés tous les programmes Java et exercices relevant de ce tp.
2.2- Exercice : projet "queue"
Une file d'attente est une liste d'attente à discipline "premier entré = premier sorti", qui est typiquement utilisée comme mémoire tampon de communication entre deux processus fonctionnant en asynchronisme à des vitesses différentes.
--------------------------
ajouts -->
| | |
| |
| --> retraits
--------------------------
L'ordre des éléments dans une file d'attente ordinaire est l'ordre d'arrivée dans la file d'attente.
Soient ajouter et retirer les fonctions qui permettent d'ajouter, respectivement retirer, un élément d'une liste d'attente et renvoient la file d'attente ainsi modifiée. Le comportement d'une file d'attente se caractérise par les propriétés logiques suivantes (spécification fonctionnelle, pas en syntaxe Java !) :
On se propose de définir et gérer une file d'attente d'élements de type Object. La liste d'attente
sera implantée sous forme d'une liste chaînée de type LinkedList.
2.2.1- File d'attente simple
Dans BlueJ, créer un nouveau projet de
nom queue dans le répertoire IN3S02-tp5
prélablement défini.
Prendre connaissance de la classe LinkedList (y compris des méthodes héritées) puis écrire en
Java une classe Queue
répondant aux spécifications suivantes :
Compiler et tester.
2.2.2- File d'attente avec priorités
On se propose de compléter la classe Queue préalablement définie afin que l'on puisse gérer des files d'attente avec priorités.
Avant de la modifier le classe Queue,
la sauvegarder dans SimpleQueue.java
Dans une file d'attente avec priorités, chaque élément est doté d'une priorité qui est susceptible d'affecter son rang dans la liste d'attente. L'ordre des éléments dans une file d'attente avec priorités dépend non seulement de leur ordre d'arrivée dans la file mais également de leur priorité.
Supposons les priorités codées par un entier
naturel, la priorité maximale étant 0. Soient deux éléments e1 et e2 de
priorités respectives p1 et p2, arrivés aux instants respectifs t1 et t2.
Leur rang relatif dans la liste d'attente est défini par :
rang(e1)
< rang(e2) ssi ( p1 <
p2 ) ou ( (p1 = p2) et (t1 < t2) )
Ecrire en Java une classe Data répondant aux spécifications suivantes :
Modifier la classe Queue
afin de pouvoir gérer une liste d'attente avec priorités d'objets de type Data. Ces modifications concernent
principalement les méthodes suivantes :
Compiler et tester.
2.2.3- Terminer l'exercice
Sauvegarder le projet queue 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-tp5.
Se déloger.