Un Browser de hiérarchies de classes
Java en Java
I) Ressources nécessaires (langages, matériels, compétences) :
- Java
- API Swing
- Java2d
- Introspection
II )Soit un développement Java découpé en un ensemble de
paquetages, l’outil considéré doit :
1) Permettre de choisir un répertoire sont localisés les fichiers compilés
java les .class
2) Interroger les différentes classes par les possibilités d’introspection du
langage et construire une hiérarchie représentant le graphe d’héritage entre
classes et interfaces (un lien implements est un lien extends)
3) Afficher la hiérarchie reconstituée dans un browser.
Pour un affichage joli, Il y a deux choses à prendre en compte :
o Le rang du sommet (sa distance par rapport à la racine)
o Minimiser le nombre d’arcs qui se coupent.
o Un algorithme vous sera fourni pour ceci.
4) Ce browser doit permettre d’afficher les différents constituants d’une
classe lorsque l’utilisateur clique sur l’une d’entre elles.
5) Ce browser doit permettre de déplacer ou d’inverser les classes d’un
même rang afin d’optimiser manuellement le rendu graphique de la hiérarchie
Recherche :
Nous allons, dans ce chapitre, nous intéresser à la mise en oeuvre d'interfaces
graphiques en Java. Comme nous allons le voir, il vous est possible de créer toutes
sortes d'interfaces, et d'y inclure tous types de composants : des boutons, des case à
cocher, des zones de saisie de texte, ... Mais vous pourrez aussi y inclure des
composants plus complexes : des menus, des arbres déroulant, des boîtes de
dialogue pour choisir des fichiers, des couleurs, ... Nous allons, tout au long des
chapitres suivants, présenter les principales possibilités qui vous sont offertes.
L'API Swing :
SWING fut donc mis en place pour assurer 100% de portabilité (même un pixel
doit avoir la même couleur). Le pari est gagné, mais à un coup non forcément
négligeable : pour assurer cette portabilité, un bouton (au tout autre composant
graphique) est dessiner non plus par l'OS, mais par Java (ce qui en terme de temps
d'exécution à un prix).
En fait, SWING est présenté comme étant écrit uniquement en Java. Bien
entendu, il y a une petite triche : en effet, Java doit au moins être capable d'interagir
avec l'OS pour pouvoir tracer un point (il faut donc autre chose que du 100% Java).
Or c'est ce que font les classes de base de l'AWT (telles que Component, Container,
...). En conséquence, tous les composants de SWING dérive d'une classe de
l'AWT.
Notez une chose importante : les mécanismes de gestion d'évènements et de
positionnent des composants de l'AWT restent utilisable avec SWING. Donc,
certaines classes déjà utilisées avec l'AWT sont donc toujours d'actualité. En terme
d'importation de package, cela implique qu'un programme SWING doit malgré tout
importer certains packages de l'AWT.
Dernières petites choses pouvant intervenir dans le choix d'une des deux API -
Swing est bien plus riche que l'AWT (même si un composant n'existe pas en natif sur
l'OS, rien n'empêche de complètement le redessiner) - Si vous cherchez à mettre en
place des applets, sachez que Swing n'est pas encore supporté par tous les
navigateurs (on peut contourner le problème, nous y reviendrons).
Créer des Arbres à l’aide de la classe swing :
http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/Swing-Tutorial-JTree.html
L’API de Java2 : http://www.infres.enst.fr/docs/jdk1.4.0/api/
L'introspection (réflexion) permet à un programme Java de
découvrir dynamiquement des informations sur une classe :
Ainsi, les champs, constructeurs, méthodes et autres caractéristiques d'une
classe peuvent être livrés sans connaissance préalable du code source d'une classe.
Ce mécanisme introspectif est généralement utilisé par des outils de développement
IDE (Integrated Development Environnement).
Par exemple, les interpréteurs et inspecteurs d'objets de ces applications s'appuient
largement sur cette technique.
Les classes nécessaires à l'introspection sont contenues dans les paquetages
java.lang et java.lang.reflect.
Le paquetage java.lang.reflect possèdent plusieurs classes et interfaces permettant
de mettre en oeuvre le mécanisme d'introspection.
Les trois classes Field, Method et Constructor possèdent un modificateur final. La
machine Virtuelle Java peut seulement créer des instances de ces classes.
Ces objets sont utilisés pour manipuler les objets sous-jacents :
o obtenir les informations d'introspection à propos des constructeurs et
membres sous-jacents
o obtenir et fixer les valeurs des champs
o invoquer les méthodes sur les objets ou les classes,
o créer de nouvelles instances des classes.
La classe Array est également finale mais non-instanciable. Elle fournit des
méthodes statiques qui permettent de créer de nouveaux tableaux et d'obtenir ou de
fixer les éléments des tableaux.
I) Cahier des charges :
1.1) Reformulation du sujet
Le logiciel doit permettre de :
- Ouvrir un dossier contenant des fichiers .class
- Récupérer son contenu grâce à l’utilisation de la classe outil Introspection
- Analyser le contenu
- Construire un arbre hiérarchique de classes sélectionnées
- Afficher l’arbre
- Permettre de modifier l’affichage de manière à changer la position des
classes affichées et de diminuer le nombre de coupures entre les branches
de l’arbre et par conséquent d’optimiser la affichage et la compréhension
du diagramme hiérarchique.
- Cliquer sur une classe et obtenir l’affichage de sa spécification
1 / 11 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !