![]() |
![]() |
![]() |
|
JXREF : Références croisées pour JavaVersion 1.6 |
Construire un outil de références croisées pour Java.
Étudier les fonctionnalités d'introspection proposées par java, notamment la classe java.lang.Class et le paquetage java.lang.reflect.
Spécifier une méthode calculant les classes référencées par une classe.
Implémenter des jeux de tests correspondant à cette spécification.
Définir un paquetage fr.imag.reflect implémentant la méthode et réaliser un outil de visualisation.
Télécharger l'archive JXREF.zip.
Suivre les instructions dans ce fichier. (ATTENTION: ce TP dépend du TP CLASSVIEW et suppose entre autre que dot est accessible.
En suivant une approche "programmation extrême", on pourra répondre à la question (1) et (2) par incréments successifs, mais on réalisera toujours les tests AVANT de réaliser le programme correspondant.
Essayer de déterminer les différentes conditions faisant qu'une classe puisse dépendre d'une autre en prenant différents exemples simples.
CR: énumérer brièvement la liste de ces cas.
Etudier le paquetage java.lang.reflect et la class java.lang.Class de manière systématique pour déterminer quelles méthodes permettent de calculer la relation de dépendance. On prêtera une attention particulière à ne oublier aucun cas. Les classes internes seront considérées comme élément intégral des classes et seront donc prises en considération. Il s'agira de compléter dans la question suivante la méthode getReferencedClasses de la classe fr.imag.reflect.Class.
CR: donner la liste des classes de java.lang.reflect concernées et pour chaque classe (incluant java.lang.Class) la liste des méthodes concernées. Commenter brièvement.
Si Objecteering est disponible réaliser un diagramme de classe conceptuel décrivant la réflection en Java. Donner une spécification conceptuelle de la relation de dépendance telle que l'on chercher à la calculer et l'exprimer en OCL.
CR: un ou plusieurs diagrammes de classes + la où les expressions OCL.
Réaliser avec JUnit des classes de tests simples pour chaque cas identifié ci-dessus. Le répertoire tests devra accueillir l'ensemble des tests:
Compléter la méthode getReferencedClasses de la classe fr.imag.reflect.Class. Les autres méthodes de cette classe seront complétées dans les questions suivantes.
Tester cette méthode. Attention, la qualité des tests est essentielle et il est donc fondamental de prendre des données réelles pour valider ce TP. Ce dernier sera évalué à partir de jeu de tests complexes. Le répertoire tests/data/src contient des exemples de données de tests dans des paquetages préfixés par ref (Ne pas utiliser ce préfixe pour vos données de tests).