Atelier 5.3, exercice B: implanter un mappage par arbre #
Exemple de tests réussis #
Recopier des classes à partir de l'atelier5_2
#
-
Recopier les classes suivantes:
MapHash
ChaineHashc
TesteurDeMapAbstrait
TesteurDeMapHashc
Recopier des classes à partir de l'atelier5_3_A
#
-
Recopier les classes suivantes:
MonNoeud
MonArbre
Créer la classe ChaineComparable
#
-
Ajouter la classe suivante au paquet
atelier5_3_B
- Nom de la classe:
ChaineComparable
- Nom de la classe:
-
Débuter l’implantation comme suit:
public class ChaineComparable extends CleComparable<String> {
public ChaineComparable(String valeurJava) {
super(valeurJava);
}
@Override
public int compareTo(CleComparable<String> o) {
// TODO
}
}
Créer la classe MaPairePourMap
#
-
Ajouter la classe suivante au paquet
atelier5_3_B
- Nom de la classe:
MaPairePourMap
- Nom de la classe:
-
Débuter l’implantation comme suit:
public class MaPairePourMap<C extends CleComparable<C>,
V extends Object>
extends PairePourMap<C, V> {
public MaPairePourMap(C cle, V valeur) {
super(cle, valeur);
}
@Override
public int compareTo(PairePourMap<C, V> o) {
// TODO
}
}
Créer la classe MapArbre
#
-
Ajouter la classe suivante au paquet
atelier5_3_B
- Nom de la classe:
MapArbre
- Nom de la classe:
-
Débuter l’implantation comme suit:
public class MapArbre <C extends CleComparable<C>, V extends Object> extends MapJava<C,V> {
private MonArbre<PairePourMap<C,V>> arbre = new MonArbre<>();
public MonArbre<PairePourMap<C, V>> getArbre() {
return arbre;
}
public void setArbre(MonArbre<PairePourMap<C, V>> arbre) {
this.arbre = arbre;
}
@Override
public void put(C c, V v) {
// TODO
}
@Override
public V get(C c) {
// TODO
}
@Override
public void clear() {
// TODO
}
@Override
public int size() {
// TODO
}
@Override
public boolean isEmpty() {
// TODO
}
@Override
public boolean containsKey(C c) {
// TODO
}
@Override
public boolean containsValue(V v) {
// TODO
}
@Override
public void remove(C c) {
// TODO
//
// trouver le bon noeud
// appeler la méthode seRetirer() sur ce noeud
}
@Override
public List<C> keys() {
// TODO
}
}
Créer la classe TesteurDeMapArbre
#
-
Ajouter la classe suivante au paquet
atelier5_3_B
- Nom de la classe:
TesteurDeMapArbre
- Nom de la classe:
-
Implanter comme suit:
public class TesteurDeMapArbre extends TesteurDeMapAbstrait {
@Override
public MapJava<Cle<String>, Integer> nouveauMap() {
return new MapArbre();
}
@Override
public CleComparable<String> nouvelleCle(String valeur) {
return new ChaineComparable(valeur);
}
@Override
public void accederAuxClesDansOrdre(MapJava<Cle<String>, Integer> map) {
/*
* TODO: cette fois-ci pas besoin de trier les clés!
*
*/
//afficherCle("CLÉ ARBRE: " + cle.getValeur());
}
}
Créer la classe MonAtelier5_3_B
#
-
Ajouter la classe suivante au paquet
atelier5_3_B
- Nom de la classe:
MonAtelier5_3_B
- Nom de la classe:
-
Implanter comme suit:
public class MonAtelier5_3_B extends Atelier5_3_B {
public static void main(String[] args) {
(new MonAtelier5_3_B()).valider();
}
@Override
public TesteurDeMap fournirTesteurDeMapHash() {
return new TesteurDeMapHashc();
}
@Override
public TesteurDeMap fournirTesteurDeMapArbre() {
return new TesteurDeMapArbre();
}
}
Compléter les implantations #
- Utiliser l’outil de validation pour tester votre code
-
vous pouvez aussi afficher les fichiers
html
:MapArbre.html
- (à la racine du projet)
Tester l’efficacité du code #
-
Les méthodes de votre
TesteurDeMapAbstrait
seront appelées- typiquement, utiliser une boucle pour effectuer une opération un certain nombre de fois
-
Vous devriez avoir des résultats similaires aux résultats ci-bas
fairePlusieursAjoutsAleatoires
:
fairePlusieursModificationsAleatoires
:
fairePlusieursRetraitsAleatoires
:
-
accederAuxClesDansOrdre
(*):- (*) ce graphe semble varier beaucoup d’un ordi à l’autre