La généricité java
Notes de cours et TP 2007- IUP GMI 3 et Master d’Informatique UMINM 202
Marianne Huchard
1
Préliminaires pour le TP
Pour vérifier la version de Java avec laquelle vous travaillez, utilisez la commande java -version Dans l’environnement actuel, positionnez la variable PATH de manière à ce qu’elle vous oriente vers le JDK 1.5, avec (en bash) export PATH=/usr/local/java/jdk1.5.0/bin :$PATH Pensez à positionner également la variable CLASSPATH et à utiliser le mécanisme des packages pour être dans de bonnes conditions de travail. Pour avoir de nombreux détails sur la compilation, utilisez le compilateur javac avec l’option -Xlint.
2
Introduction
Le polymorphisme paramétrique (ou généricité), qui autorise la définition d’algorithmes et de types complexes (classes, interfaces) paramétrés par des types, est une caractéristique fondamentale des langages auxquels il apporte une meilleure lisibilité et un meilleur niveau d’abstraction. La plupart des langages de programmation évolués en disposent (Eiffel, Ada, C++, Haskell, etc.) ainsi que le langage de modélisation UML. La figure 1 présente ainsi un concept d’association ou de paire, souvent présent dans les bibliothèques proposant des structures de données (des collections). Une paire représente un couple d’éléments dont le premier est une clef d’accès au second. Là encore, il est judicieux de déclarer un modèle d’association, paramétré par le type de la clef et le type de la valeur (appelés first et second dans le cas des paires) On peut parler d’abstraction fonctionnelle par analogie au paramétrage de fonctions ordinaires.
3
Intérêt du polymorphisme paramétrique
En l’absence de polymorphisme paramétrique, on le simule principalement : – soit en ayant une unique copie du code utilisant un type universel, par exemple Object en Java (traduction homogène) ; – soit en créant une copie spécialisée du code pour chaque situation (traduction hétérogène). Par