Sort
IPA - TD2
- Récupérer les fichiers
de la version 1.
Commenter le code.
Ecrire une classe TestSort dans le paquetage par défaut pour
tester les deux tris sur les chaînes de caractères
passées en argument de la ligne de commande. (corrigé)
Pour chacune des questions
suivantes, proposer une solution, par exemple en utilisant la notation
UML, puis implementer.
- Comment utiliser indifféremment différents
algorithmes de tri ? (corrigé)
- Comment utiliser
indifférement différents types de données, par
exemple des tableaux ou des listes (java.util.List) ? En particulier,
on s'assurera que ces données sont toujours comparables.
Pourquoi est-il préférable de mettre les méthodes
de comparaison finales ?
(corrigé, diagramme)
- Comment pouvoir facilement modifier l'ordre
d'un tri, par exemple
croissant/décroissant, lexicographique pur/longueur +
lexicographique ? Plus généralement, comment pouvoir
trier des objets non comparables en fournissant une fonction de
comparaison ? On regardera en particulier la classe
java.util.Comparator<T>. (corrigé,
diagramme)
- Rajouter des classes permettant de
- combiner deux comparateurs pour effectuer un tri sur un
objet composite,
- fournir l'opposé d'un comparateur,
- fournir un comparateur "trivial" sur des données
comparables.
Tester en fournissant une classe People représentant des
personnes avec leur nom et prénom, et en les triant dans
l'inverse de l'ordre alphabétique par nom puis par
prénom. (corrigé)
- Rajouter 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). (corrigé, diagramme)
- Comment simplifier l'utilisation du
module à un client
qui veut juste faire un tri rapide sur un tableau (par exemple) sans
avoir à comprendre les classes comme SortableData ?
- Rajouter une
fonctionnalité de visualisation du tri dans une
fenêtre. On affichera les éléments à trier
à l'aide de JLabel. L'affichage sera temporisé à
l'aide de Thread.sleep(int t). Le paramètre t pourra être
(dans un deuxième temps) ajusté en utilisant un
JSlider. Les deux méthodes de traçage (affichage sur
stdout et visualisation graphique) seront implémentées en
utilisant le modèle Observable/Observé (voir
java.util.Observer et java.util.Observable). (corrigé sans WinTracer, diagramme)
- Modifier la
méthode
main de TestSort pour que
l'algorithme de tri à utiliser soit précisé sur la
ligne de commande (voir java.lang.Class).