:: Enseignements :: Licence :: L3 :: 2007-2008 :: Programmation Objet avec Java ::
[LOGO]

Generics, foreach, itérateur, table de hachage


Exercice 1 - Générification

  1. Générifier le code ci-dessous, en transformant Pair en Pair<U,V>.
         public class Pair {
           private final Object first;
           private final Object second;
    
           public Pair(Object first,Object second) {
             this.first=first;
             this.second=second;
           }
           public Object getFirst() {
             return first;
           }
           public Object getSecond() {
             return second;
           }
           public static void main(String[] args) {
             Pair p1=new Pair("toto","titi");
             Pair p2=new Pair(2,p1);
    
             Pair p3=(Pair)p2.getSecond();
           }
         }
         

Exercice 2 - Générification de LinkedLink

Le but de cet exercise est de générifier les classes fr.umlv.datas.LinkedLink et fr.umlv.datas.Link

  1. Paramétrer la classe fr.umlv.datas.LinkedLink pour que celle-ci soit générique.
  2. Modifier la classe fr.umlv.datas.main.Main en conséquence.

Exercice 3 - Foreach

On souhaite parcourir une fr.umlv.datas.LinkedLink en utilisant une boucle foreach.
     LinkedList<String> list=...
     for(String element:list) {
       ...
     }
   

  1. Quelle interface doit implanter la classe fr.umlv.datas.LinkedLink ?
    Quelle méthode doit-on écrire ?
  2. Ecrire une classe fr.umlv.datas.LinkedLinkIterator permettant d'itérer sur une fr.umlv.datas.LinkedLink prise en paramétre lors de la construction.
  3. Ecrire un code testant que votre itérateur marche correctement.
  4. Faire en sorte que l'on puisse utiliser la boucle foreach.

Exercice 4 - Association et contrat sur les Objets

Qu'affiche le code ci-dessous ?
    Map<Pair<String,String>,String> map=new HashMap<Pair<String,String>,String>();
    map.put(new Pair<String,String>("jean-paul","sartre"),"mort");
    map.put(new Pair<String,String>("elvis","presley"),"vivant");

    map.remove(new Pair<String,String>("elvis","presley"));

    System.out.println(map);
   
Que doit-on faire pour résoudre le problème ?