Sort

  1. On dispose dans cette première version de deux classes composées de méthodes statiques permettant de trier des tableaux de java.util.Comparable, QuickSort et InsertionSort, et d'une classe de test TestSort.
  2. Cette version rajoute une interface Sort pour permettre l'usage indifférencié d'un tri. QuickSort et InsertionSort sont modifiées pour implémenter cette interface, ainsi que TestSort.
  3. Cette version rajoute une interface SortableData, typant des données triables. Deux implémentations sont proposées : SortableArray et SortableList qui adaptent les tableaux et les instances de List contenant des objets comparables à SortableData et partagent du code grâce à la classe abstraite SortableComparableData. Les classes Sort, QuickSort, InsertionSort, et  TestSort sont modifiées pour utiliser des SortableData (voir le diagramme UML).
  4. Cette version permet de modifier l'ordre d'un tri ou plus généralement de rajouter une fonction de comparaison à des objets au départ non comparables. Elle est basée sur la classe java.util.Comparator.
    Les classes Sort, InsertionSort et QuickSort restent inchangées.
    Par contre, l'architecture autour de SortableData est profondément modifée (voir le diagramme UML). On trouve maintenant les interfaces IndexedData, ComparableData, SwapableData, les classes SwapableArray et SwapableList, la classe abstraite ComparableSwapableData, et les deux classes SortableComparableData et SortableDataWithComparator.
    La classe Lexicographic permet de combiner deux Comparator de façon lexicographique, la classe Reverse d'inverser un Comparator, la classe TrivialComparator de disposer d'un comparateur à partir de données comparables.
    La classe TestLexicographic et People permettent de trier des personnes à partir de leur nom et de leur prénom.
  5. Cette version rajoute une fonctionnalité de traçage du tri (affiche sur stdout les comparaisons et les échanges) et une fonctionnalité de statistique (compte les comparaisons et les échanges) grâce aux décorateurs SortableDataWithTracer et SortableDataWithStatistics (voir le diagramme UML). La classe de test TestSort est également modifiée.
  6. Cette version facilite l'utilisation du module à un client qui veut juste faire un tri rapide sur un tableau (par exemple) sans avoir à comprendre des classes comme SortableData, grâce à une façade Sorts. TestSort est également modifiée.