REPORT.md 1,73 ko
Newer Older
# Implantion d'une Queue (Liste FIFO) en <r style="color:red">SCALA</r>
## Rapport de projet

mathieu-chouchou's avatar
mathieu-chouchou a validé
Le but du projet, comme il peut sembler évident avec le titre, était d'implémenter une Queue en Scala.
Il s'agit d'une queue fonctionnant avec deux listes internes, qu'on appelle "in" et "out", qui permettent de renverser la liste en fonction des besoins.

### Détails de l'implantation

Comme brièvement expliqué dans l'introduction, la queue est implémentée grâce à deux listes de l'api de base de Scala (l'objet List),
que l'on réaffecte (ou plutôt recrée, nous sommes dans une optique fonctionnelle) selon l'opération à effectuer :
mathieu-chouchou's avatar
mathieu-chouchou a validé

- Si on ajoute des éléments à la queue, c'est la liste "in" qui est sollicitée.
- Si on récupère des éléments de la queue, c'est la liste out qui est sollicitée.
Méthodes classiques de Queue implantées :

- enqueue (permet d'ajouter un élément dans la file)
- dequeue (permet de retirer la tête de file et la récupérer)
- headOption (permet de visualiser la tête de file si elle existe). Cette dernière utilise l'objet Option de Scala afin de ne pas être bloqué sur les listes vides.
- isEmpty (permet de savoir si la liste est vide)

Méthodes supplémentaires implantées :

- length (permet d'obtenir la longueur de la liste)
- rearOption (contrepatie de headOption, permet de visualiser la queue de la file si elle existe)
- toList (permet de transformer la Queue en List)
- map (permet d'appliquer une fonction de transformation sur chaque élément de la Queue)
- foldLeft (permet de d'appliquer une fonction d'agrégation sur la Queue)

La Queue utilisant deux List pour gérer sa file, la plupart des méthodes ont pu être grandement simplifiées en utilisant leur équivalent sur les List.