vendredi 18 novembre 2016

[Java][BlueJ] Manipulation graphique des Classes et des Objets sous BlueJ

BlueJ est un excellent outil pour apprendre à programmer en Java. Nous avons déjà cité une excellente fonctionnalité qui permet d'exécuter un code Java sans se méfier de la fonction main et de la classe qui la contient.
Dans cet bref article, nous allons présenter quelques manipulations possibles grâce à l'éditeur graphique de BlueJ.
L'éditeur graphique de BlueJ permet de visualiser les différentes classes du projet en cours ainsi que les liens et les dépendances qui les relient. Il permet un affichage proche de celui de UML (il est possible d'installer une extension qui rend le diagramme confirme au diagramme des classes d'UML).
Les classes et les liens peuvent être créés graĉe aux outils disponibles à gauche. Ce panel contient quatre (04) commandes :

  • Créer une nouvelle classe,
  • Créer un lien d'héritage,
  • Créer un lien d'utilisation,
  • Compiler la(les) classe(s).
Prenons un exemple et créons une classe "Employe" (employé). Pour cela, il suffit de cliquer sur l'outil "New class". Une petite fenêtre s'affiche pour permettre de choisir le type de classe à créer (classe, interface, etc.) et de saisir le nom de la nouvelle classe. La classe créée est visualisée et mise en haut à droite de l'éditeur graphique.



Il est possible d'éditer le code de la classe en faisant un double-clique. Le code s'affiche dans une fenêtre séparée. Dans notre exemple, nous avons fait les modifications suivantes :


Cette même fenêtre permet d'afficher la documentation Javadoc générér pour la classe en cours. Il suffit de changer le mode d'affiche de "Source" à "Documentation" :


En deuxième étape, nous allons créer une deuxième classe appellée "Manager" et en utilisant l'éditeur graphique nous allons créer un lien d'héritage entre les deux classes "Employe" et "Manager".


En ouvrant l'éditeur du code, nous constatons que la mention "extends" est bien définie dans la déclaration de la nouvelle classe "Manager".



Il est possible de montrer le lien d'utilisation entre deux classes. Créons par exemple une nouvelle classe "Entreprise".


Pour cette entreprise, nous allons définir un attribut "m" qui est le "Manager" de cette entreprise :


En sauvegardant cette nouvelle classe et en revenant vers l'éditeur graphique, nous constatons que BlueJ a mis à jour le modèle en ajoutant le lien d'utilisation entre les deux classes "Entreprise" et "Manager".


L'éditeur graphique permet aussi quelques manipulations sur les classes créées. Ces manipulations nécessitent la compilation des classes par un clic sur la commande "Compile" à gauche de l'écran. Si une classe contient des erreurs, elle sera marquée par un point d'exclamation rouge.
Une fois les classes compilées, il est possible d'accéder aux différentes fonctionnalités par un clic-droite sur la classe concernée. Cela nous permet de :

  • Invoquer les méthodes statiques,
  • Invoquer les constructeurs pour créer des instances de la classe,
  • Inspecter la classe : voir les différentes variables statiques et leurs valeurs.

Créons une instance de la classe "Employe". Pour cela, nous allons choisir le constructeur qui exige deux paramètres :


L'objet créé avec le nom choisi s'affiche en bas à gauche de l'écran dans la zone dédiée aux instances (objets) des classes.


Il est possible de l'inspecter :


Comme il est possible d'invoquer ses méthodes (les méthodes non statiques).
Si une méthode est invoquée et qu'elle retourne une valeur, elle est affichée dans une fenêtre séparée. A titre d'exemple, nous allons invoquer la méthode tatique "description" de la classe "Employe" :


BlueJ offre plusieurs autres fonctionnalités. La plus essentielle est la possibilité d'installer (et de développer) des extensions. Plusieurs extensions très performantes sont déjà disponibles, jetez un coup d'oeil par ici.
BlueJ se montre comme une solution très efficace (particulièrement pour les enseignants) pour l'apprentissage de la programmation en Java et pour l'apprentissage de la programmation Orientée Objet.