Sort
- 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.
- 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.
- 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).
- 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.
- 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.
- 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.