Atelier 5.1: implanter un mappage naïf #
Créer la classe MapNaif
#
-
Ajouter la classe suivante au paquet
atelier5_1
- Nom de la classe:
MapNaif
- Nom de la classe:
-
Débuter l’implantation comme suit:
public class MapNaif <C extends Cle<?>, V extends Object> extends MapJava<C,V> {
private List<C> cles = new ArrayList<>();
private List<V> valeurs = new ArrayList<>();
public List<C> getCles() {
return cles;
}
public void setCles(List<C> cles) {
this.cles = cles;
}
public List<V> getValeurs() {
return valeurs;
}
public void setValeurs(List<V> valeurs) {
this.valeurs = valeurs;
}
@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
}
@Override
public List<C> keys() {
// TODO
}
}
Créer la classe TesteurDeMapAbstrait
#
-
Ajouter la classe suivante au paquet
atelier5_1
- Nom de la classe:
TesteurDeMapAbstrait
- Nom de la classe:
-
Débuter l’implantation comme suit:
public abstract class TesteurDeMapAbstrait extends TesteurDeMap {
private static final Random alea = new Random();
@Override
public void fairePlusieursAjoutsAleatoires(MapJava<Cle<String>, Integer> map, Cle<String>[] cles, int nombreOperations) {
/*
* TODO:
*
* faire 'nombreOperations' fois:
*
* - choisir une cle au hasard dans le tableau cles[]
* - appeler la méthode put avec cette cle (n'importe quelle valeur)
*/
}
@Override
public void fairePlusieursModificationsAleatoires(MapJava<Cle<String>, Integer> map, Cle<String>[] cles, int nombreOperations) {
/*
* TODO: comme fairePlusieursAjoutsAleatoires, la différence est que le map reçu en entrée n'est pas vide
*/
}
@Override
public void fairePlusieursRetraitsAleatoires(MapJava<Cle<String>, Integer> map, Cle<String>[] cles, int nombreOperations) {
/*
* TODO:
*
* faire 'nombreOperations' fois:
*
* - choisir une cle au hasard dans le tableau cles[]
* - appeler la méthode remove avec cette cle
*/
}
@Override
public void accederAuxClesDansOrdre(MapJava<Cle<String>, Integer> map) {
/*
* TODO:
*
* Créer deux listes
* - liste1: récupérer la liste de clés en appelant la méthode keys()
* - liste2: une liste de chaînes vide
*
* Pour chaque objet Cle contenu dans dans liste1
* - ajouter la valeur de la clé dans liste2
*
* trier liste2 avec Collections.sort
*
* afficher chaque valeur de liste2 en appelant la méthode afficherCle
*
*/
// XXX: afficher avec
afficherCle("CLÉ " + cle);
}
}
Créer la classe TesteurDeMapNaif
#
-
Ajouter la classe suivante au paquet
atelier5_1
- Nom de la classe:
TesteurDeMapNaif
- Nom de la classe:
-
Implanter la classe comme suit:
public class TesteurDeMapNaif extends TesteurDeMapAbstrait {
@Override
public MapJava<Cle<String>, Integer> nouveauMap() {
return new MapNaif<Cle<String>, Integer>();
}
@Override
public Cle<String> nouvelleCle(String valeur) {
return new Cle<String>(valeur);
}
}
Créer la classe MonAtelier5_1
#
-
Ajouter la classe suivante au paquet
atelier5_1
- Nom de la classe:
MonAtelier5_1
- Nom de la classe:
-
Implanter la classe comme suit:
public class MonAtelier5_1 extends Atelier5_1 {
public static void main(String[] args) {
(new MonAtelier5_1()).valider();
}
@Override
public TesteurDeMap fournirTesteurDeMapNaif() {
return new TesteurDeMapNaif();
}
}
Compléter les implantations #
- Utiliser l’outil de validation pour tester votre code
-
vous pouvez aussi afficher le fichier
html
:MapNaif.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
- XXX: SVP faire
nombreOperations*50
fois (l’outil est mal calibré)
-
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