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.