// // Cette classe doit etre completee a partir des informations // obtenues sur le parcours d'une hierarchie de classe // et sur la creation de graphe. // Il faut utiliser une table associative (Map) pour marquer les // noeuds deja visites lors du parcours recursif. // java.util.Map est une interface, java.util.HashMap une implementation // possible. // package fr.imag.classview.app ; import att.grappa.Graph ; import att.grappa.Node ; import att.grappa.Edge ; import java.util.Map ; import java.util.HashMap ; import java.util.Set ; import java.util.HashSet ; import java.util.Iterator ; import fr.imag.classview.util.DisplayGraph ; /** * Creation d'un graphe correspondant a une hierarchie de classes. **/ public class ClassGraph { /** * Ajoute les super classes d'une classe donnee a un graphe. * Maintient une table associative (Map) permettant d'associer * a chaque classe le noeud correspondant dans le graphe. Cette * table associative permet non seulement de retrouver pour chaque classe * deja visitee le noeud correspondant, mais egalement de marquer * les classes deja visitees. * @param dico la table associative Class -> Node dans laquelle * est ajoutee chaque noeud correspondant a une classe visitee. * @param g le graphe dans lequel sont crees les noeuds. * @param c la classe a partir duquel on commence le parcours * @return le noeud correspondant a la classe de depart **/ public static Node/*!*/ addSuperclasses(Map/*!*/ dico, Graph/*!*/ g, Class/*!*/ c) { // // A completer en respectant les types précis ci-dessus // } /** * Cree le graphe correspondant a la hierarchie des superclasses * de toutes les classes donnees en parametres. * @param classnames un ensemble de chaine de caracteres correspondant * a des noms de classes. Si une chaine de caractere * est invalide celle ci n'est pas prise en compte. * @result le graphe cree. **/ public static Graph/*!*/ graphFromClasses( Set/*!*/ classnames) { // // A completer // } /** * Exemple d'utilisation. * @param args inutilise **/ public static void main(String[] args) { /*[String]*/Set classnames = new HashSet() ; classnames.add("javax.swing.JButton") ; classnames.add("java.util.HashSet") ; classnames.add("java.util.TreeSet") ; classnames.add("java.util.LinkedList") ; classnames.add("java.util.ArrayList") ; DisplayGraph.display(graphFromClasses(classnames)) ; } }