TD 10 - HashMap 1 Présentation du sujet 2 Classe Couple

IUT Charlemagne - Dept info 2012-2013
Compl´ement JAVA DUT 2A
TD 10 - HashMap
1 Pr´esentation du sujet
On souhaite d´evelopper une classe g´en´erique TabAsso en JAVA permettant de ma-
nipuler un tableau associant des objets d’une classe E`a des objets d’une classe F.
Exemple : une liste de courses qui associe `a chaque ´el´ement le nombre d’´el´ements `a
acheter.
Clef (de type E, par ex String) Valeur (de type F, par ex Integer)
Jambon 4
Poireau 2
Chocolat 1
La classe TabAsso consistera en un tableau de couples (clef, valeur), chaque clef ne
pouvant ˆetre pr´esente qu’une seule fois dans le tableau.
2 Classe Couple
Pour ce faire, vous allez commencer par ´ecrire la classe g´en´erique Couple. Chaque
objet de cette classe contient deux attributs
un attribut clef de type E(variable de type)
un attribut valeur de type F(variable de type)
La classe Couple permet de mod´eliser les associations clef-valeur : un objet de type
Couple repr´esente une association de ce type.
2.1 D´eclaration et constructeur
D´eclarer la classe Couple.
´
Ecrire un constructeur qui prend une clef et une valeur en param`etre et qui permet
de cr´eer l’objet Couple correspondant.
2.2 Acc`es
Ecrire une m´ethode getClef() qui retourne la clef du couple.
Cpt JAVA - TD 10 - HashMap 1
2.3 Utilisation
Utilisez le constructeur dans un main pour associer `a la clef String ”Jambon” l’en-
tier 4.
3 Tableau associatif
3.1 D´eclaration
Un tableau associatif est aussi une classe g´en´erique (il faut pr´eciser `a l’utilisation le
type des clefs et le type des valeurs, exactement comme la classe HashMap de JAVA)
Un objet de type tableau associatif contient un attribut listeCouples qui est
ArrayList des couples correspondant. Chaque couple de cette liste correspondra `a
une association stock´ee dans le tableau associatif.
D´eclarer la classe et ses attributs.
3.2 Constructeur
´
Ecrire un constructeur qui construit un tableau associatif en initialisant l’attribut
listeCouples (ne contenant initialement pas d’´el´ement)
3.3 M´ethode get
D´eclarer et ´ecrire la m´ethode get. Cette m´ethode prend en param`etre une clef et
retourne la valeur associ´ee `a cette clef (en parcourant le tableau de couples). Si cette
clef n’est associ´ee `a aucune valeur, la m´ethode retourne null.
3.4 M´ethode insertion
D´eclarer et ´ecrire la m´ethode insertion permettant d’ajouter une association au
tableau. Cette m´ethode v´erifie si la clef est pr´esente (auquel cas, elle modifie la valeur
associ´ee) si la clef n’est pas d´ej`a pr´esente, elle ajoute l’association.
3.5 M´ethode toString
´
Ecrire une m´ethode toString.
3.6 Tests
V´erifiez le bon comportement de vos m´ethodes en cr´eant une liste de courses.
Une fois que cela est fait, testez le comportement de vos classes avec le morceau de
programme suivant :
Cpt JAVA - TD 10 - HashMap 2
//test1
TabAsso<String,Integer> t=new TabAsso<String, Integer>();
t.insertion("Jambon", 4);
t.insertion("Jambon", 84);
String a="Jambon";
t.insertion(a,56);
System.out.println(t);
// test2
TabAsso<String,Integer> t2=new TabAsso<String, Integer>();
t2.insertion("Jambon", 84);
String b="Jam";
b=b+"bon";
t2.insertion(b,56);
System.out.println(t2);
Y a-t-il un comportement diff´erent. Si oui, pourquoi ?
Comment pensez vous comparez les clefs ? Avez vous besoin de modifier la d´eclaration
de la classe tableauAssociatif ? pourquoi ? Comment s’effectue la comparaison par
d´efaut ?
Comment modifier la mani`ere dont la comparaison s’effectue ?
3.7 M´ethode listeclef
D´eclarer et ´ecrire une m´ethode retournant la liste des clefs.
4 H´eritage
4.1 Utilisation de tabAsso
Soit un tableau associatif tabAsso associant des String (valeur) `a des Numbers
(clef). D´eclarer ce tableau associatif.
Peut-on utiliser ce tableau pour associer des String `a des Integer ? Oui/non ?
Comment et pourquoi ?
Peut on utiliser ce tableau comme param`etre d’une fonction qui prend un tableau
associatif associant des String `a des Integer ? oui/non ? pourquoi ?
4.2 Interface g´en´erique
Comme il existe plusieurs mani`eres d’impl´ementer un tableau associatif (table de ha-
chage, liste de couples, . . .cf cours de structure). Nous allons donc s´eparer la d´eclaration
Cpt JAVA - TD 10 - HashMap 3
de l’interface (qui propose les m´ethodes) de son impl´ementation.
Modifiez votre code en d´eveloppant
une interface g´en´erique Tab<E,F> proposant toutes les m´ethodes
la classe tabAsso<E,F> impl´ementant cette interface
4.3 TabAsso affichable
On souhaite faire un tableau associatif stockant des clefs affichable (qui poss`ede la
m´ethode affiche)
Comment faire ? et pourquoi ? Proposer une classe h´eritant de TabAsso fonctionnant
de cette mani`ere et ayant la m´ethode affiche (affichant la liste des clefs)
Utiliser cette classe convenablement en v´erifiant que des tests ´equivalents `a ceux de
la question 3.5 sont encore valides.
Cpt JAVA - TD 10 - HashMap 4
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !