Définir et utiliser l'interface Ordonnable
L'objectif est de de définir une classe capable de gérer une liste triée d'objets modélisé avec un ArrayList d'objets appartiennant à une classe implémentant l'interface Ordonnable.
Cette classe ressemblera beaucoup à la classe ArrayListTrie définie dans un exercice précédent. Elle sera générique, son en-tête sera :
public class ListeOrdonnablesTries<E extends Ordonnable> extends ArrayList<E>
Cela signifie que l'ArrayList devra contenir des éléments d'une classe E implémentant l'interface Ordonnable. Lorsque la classe ListeOrdonnablesTries sera instancié, on précisera entre < et > ce qu'est la classe E ; on verra cela dans le programme qui testera notre classe.
La classe ListeOrdonnablesTries devra contenir au moins :
- une méthode d'en-tête :
- public void inserer(E e)
pour insérer l'instance e dans la liste ;
- une méthode d'en-tête :
- public void supprimer(E e)
pour supprimer l'instance e de la liste. Cette méthode utilisera probablement la la méthode equals de java.lang.Object ; en conséquence, il sera nécessaire, quand on utilisera la classe ListeOrdonnablesTries que la classe E redéfinisse cette méthode.
- une méthode toString qui redéfinit la méthode toString de Object en retournant une chaîne de caractères contenant la suite des éléments de la liste en les séparant par des caractères de fin de ligne (\n).
- une méthode afficher() qui écrit à l'écran le contenu de la liste.
On écrira enfin une classe EssaiOrdonnablesTries pour tester la classe ListeOrdonnablesTries avec des instances de la classe Identite. Cette classe contiendra une méthode main qui prend en arguments un nom de fichiers contenant une suite de noms et prenoms (par exemple identite.txt. La méthode main :
- aura une variable locale nommée liste de type ListeOrdonnablesTries<Identite>,
- insérera successivement tous les objets de type Identite correspondant aux noms et aux prénoms du fichier ;
- affichera la liste triée obtenue ;
- demandera à l'utilisateur un nom et un prénom ;
- retirera de la liste l'Identite correspondant à ce nom et ce prénom, si une telle Identite figure dans la liste ;
- affichera à nouveau la liste.
Un objet Scanner (du paquetage java.util) peut permettre de lire un fichier, en le créant par exemple :
Scanner entreeFichier = new Scanner(new java.io.File(arg[0]));
où arg[0] sera alors le nom du fichier et le premier paramètre à l'exécution et où File fait partie du paquetage java.io. L'instanciation de la classe File peut lancer une FileNotFoundException ; vous ajouterez en conséquence throws FileNotFoundException à l'en-tête de la méthode main.
Corrigé
: