UP | HOME

Files à priorité - Interfaces et premières implémentations

Table of Contents

Le but du TP est de définir un type pour les files à priorité et l'implémenter d'une manière simple. Ce travail est à faire en groupe, dont la composition doit être indiquée dans le fichier README. Le langage utilisé pour ce premier TP est Java.

Travail à faire

  • Définir une interface contenant les opérations suivantes.
    • Ajout d'un élement appartenant à un ensemble ordonné
    • Retrait de l'élément le plus prioritaire.
    • Test de vacuité
  • Implémenter cette interface par deux classes.
    • La première utilise une liste d'éléments pour stocker les éléments de la file.
    • La seconde utilise une liste triée d'éléments.
  • Pour cette première interface et ses implémentations, prévoir deux versions : l'une immutable, l'une mutable. Garantir la même complexité des opérations dans les deux cas.
  • Définir une seconde interface étendant la première. Cette seconde interface utilise pour éléments des couples, formés d'éléments d'un premier ensemble et de priorités, appartenant à un ensemble ordonné. L'ensemble des couples (élément, priorité) est ordonné par l'ordre sur les priorités. Elle possède une opération supplémentaire.
    • Remplacement d'un couple (élément, priorité) par un couple plus prioritaire (élément, priorité').
  • Implémenter cette seconde interface en étendant les deux classes d'implémentation précédente.

Indications

  • Les interfaces et les classes d'implémentations sont génériques. Elles sont paramétrées par le type des éléments contenus dans la file.
    • Voir le tutoriel sur les génériques.
  • Pour spécifier qu'un type est un esemble ordonné, utiliser l'interface Comparable<T>.
  • N'hésitez pas à poser des questions pour obtenir plus d'indications.

Consignes et livrables

  • Utiliser une branche git pour développer. Choisir un nom suffisamment long et original pour éviter tout conflit. Seul le contenu de votre branche sera considéré.
  • Définir un fichier README dans le répertoire 2020 du dépôt. Celui-ci doit contenir au moins les informations suivantes :
    • le nom de la branche utilisée,
    • la composition du groupe,
    • les conventions de nommage
  • Définir les interfaces et les classes d'implémentation dans le paquet file.session1, à placer dans le répertoire 2020/java/src/file/session1.

Author: Hervé Grall
Version history: v1: 2019-10-02.
Comments or questions: Send a mail.
The webpage content is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.