1 OrderedList
1. Créez une implémentation de l’interface OrderedStructure. L’implémentation, OrderedList, doit
utiliser des noeuds doublement chaînés, ainsi qu’un noeud factice. La classe doit posséder une référence
head vers le noeud factice. De plus, l’implémentation doit lancer toutes les exceptions nécessaires. Voir
OrderedStructure.
(a) Nous allons développer cette implémentation étape par étape, de haut en bas. C’est-à-dire que
nous allons d’abord implémenter les éléments de haut niveau (variables d’instance, classe im-
briquée statique, et des coquilles pour chacune des méthodes). Une fois tout ça en place, nous
implémenterons le corps des méthodes, une à une.
Premièrement, vous devez créer une définition initiale. Pour l’instant, nous ignorons l’implémen-
tation des méthodes afin de nous concentrer sur les variables et la nécessité d’une classe « static »
imbriquée afin de représenter les noeuds de la liste. Pour satisfaire les exigences du compilateur,
toutes les méthodes de l’interface OrderedStructure doivent être déclarées. La classe doit donc
contenir une classe Node, les variables d’instance et des déclarations vides pour chacune des
méthodes de l’interface.
Le compilateur n’acceptera pas des déclarations vides pour les méthodes retournant une valeur.
Vous pourriez inclure un énoncé de retour bidon, retourner la valeur -99 pour la méthode size,
sachant que cet énoncé sera remplacé par une implémentation complète éventuellement.
Cependant, il se peut que vous oubliiez de faire ces changements et l’ensemble de la classe de-
viendrait difficile à déboguer. Pour cette raison, je préfère créer une définition initiale ne contenant
que l’énoncé suivant.
throw new UnsupportedOperationException(" not implemented yet ! " ) ;
Ça nous permet de compiler la classe et de travailler sur l’implémentation des méthodes une à une.
Toute tentative d’utiliser une méthode qui n’a pas encore d’implémentation sera signalée par une
exception ! Vous pouvez demander des explications supplémentaires à votre aide à l’enseignement
si nécessaire.
Créez une classe test, OrderedListTest. Pour l’instant, elle ne contient qu’une méthode princi-
pale déclarant une variable de type OrderedList, désignant un objet OrderedList. (Vous pouvez
utiliser JUnit si vous le souhaitez.)
Assurez vous que l’implémentation partielle comprenne tous les éléments ci-haut et qu’elle compile
parfaitement. Lorsque ce sera fait, vous pouvez procéder à la prochaine étape, l’implémentation
de la méthode size.
Fichiers
•OrderedStructure.java
•OrderedList.java
•OrderedListTest.java
(b) Implémentez la méthode size(), remplacez l’énoncé throw par une implémentation itérative,
traversant la liste et comptant ses éléments. Ajoutez un test à la classe test afin de vous assurer
que la méthode fonctionne pour la liste vide. Nous ajouterons d’autres tests lorsque nous aurons
une méthode add.
Fichiers
•OrderedStructure.java
•OrderedList.java
•OrderedListTest.java
2