Préparation du workspace

Le workspace est le répertoire de travail dans lequel seront stockés tous vos projets. Vous pourriez définir un nouveau projet par TP pour par étude de cas.

  1. Créez un dossier pour abriter tout votre travail du semestre avec Modelio. Dans la suite de ce TP, on considère que vous avez créé un dossier ~/uml/modelio.

  2. Lancez Modelio à partir du terminal, avec la commande modelio (n’oubliez pas le & pour que le terminal reste disponible après le lancement de Modelio.

Par défaut, Modelio utilise un workspace dans le dossier ~/modelio

  1. Pour changer de workspace, File > Switch Workspace par le menu de Modelio.
  1. Sélectionnez ~/uml/modelio dans la boîte de dialogue, de manière à ce que Modelio enregistre votre travail dans le dossier en question.

Création d’un projet et du premier diagramme

  1. Pour créer un projet, File > New Project dans le menu. Pour ce TP, nommez votre projet TP de prise en main. Validez en n’oubliant pas de cocher la case Java Project.

Un paquetage nommé tp de prise en main (avec des minuscules) est automatiquement créé.

  1. Créez un premier diagramme de classes : vous pouvez employer le menu contextuel (clic droit) sur le paquetage tp de prise en main (dans l’arborescence à gauche).

Par défaut, le diagramme de classes a pour nom tp de prise en main.

  1. Changez ce nom en salariés. Vous pouvez employer le menu contextuel ou le raccourci F2 après avoir sélectionné le diagramme dans l’arborescence à gauche.

Création d’une classe

  1. Ouvrez le diagramme de classes en double-cliquant dessus dans l’arborescence du projet, si ce n’est pas déjà fait.

  2. Pour créer un classe, glissez-déposez une icône Class dans la fenêtre du diagramme.

Une classe apparaît dans le diagramme.

  1. Renommez cette classe en Entreprise, soit en cliquant sur le nom de la classe, soit en employant le menu contextuel de l’item Class dans l’arborescence du projet.
  1. Créez un attribut dans la classe en glissant-déposant l’icône A : Attribute sur la classe dans le diagramme.

  2. Renommez l’attribut en nom.

Génération de code Java

  1. Dans le diagramme, sélectionnez la classe Entreprise et dans l’onglet Java de la partie inférieure de la fenêtre de l’application, sélectionnez Element Java.

Ceci indique que la classe fera l’objet d’une génération de code. On peut également cochez cette case au niveau du paquetage (sélectionnable dans l’arborescence) pour que tous les éléments du paquetage fassent l’objet d’une génération de code.

  1. Sélectionnez nom : string et indiquez dans l’onglet Java qu’à cet attribut devront correspondre des accesseurs en Java.

Les accesseurs en question apparaissent dans le modèle (voir l’arborescence) mais pas dans le diagramme. En effet, plusieurs diagrammes de classes peuvent être définis pour un seul projet, chacun représentant une partie du système. Il est donc nécessaire de faire apparaître explicitement ce que l’on veut dans chaque diagramme de classes.

  1. Pour faire apparaître les accesseurs, glissez-les de l’arborescence vers la classe Entreprise.
  1. Sélectionnez la classe dans le diagramme et au moyen du menu contextuel, générez un code Java pour la classe sélectionnée. On peut faire de même à partir de l’élément correspondant dans l’arborescence du projet.

Un petit symbole apparaît dans la classe pour signifier que cet élément du diagramme donne lieu à une génération de code.

  1. En sélectionnant le paquetage dans l’arborescence, faites-en un élément Java, si ce n’est déjà fait (cf 13.).

  2. En sélectionnant la classe (dans le diagramme ou dans l’arborescence), des icônes apparaissent dans l’onglet Java. Vous aviez déjà employé l’icône génération. Employez maintenant l’icône Editer.

Le code source généré par Modélio apparaît dans une fenêtre.

Round-trip engeneering (1)

Ce terme désigne la possibilité que :

et que simultanément

De cette manière, on code et modélise en même temps, en intervenant pour chaque problème au niveau le plus pratique (abstrait avec les modèles et concrets avec les codes sources).

  1. Dans le code, définissez les accesseurs comme publics.
  1. Sauvegardez et mettez à jour le modèle à partir des sources.

Utilisation d’un éditeur externe

  1. Fermez l’onglet Entreprise et éditez un fichier Adresse.java dans le dossier uml.
  1. Saisissez la classe Adresse suivante (avec ou sans le commentaire).
  1. Générez automatiquement une classe dans Modelio à partir du code source en question. Pour ce faire, vous pouvez par exemple employer le menu contextuel (clic droit) sur le fond du diagramme de classes, et sélectionner Java Designer > Reverse en cherchant à importer des codes sources en .javaet pas des binaires (.class). Sélectionnez le dossier uml dans lequel se trouve le fichier Adresse.java.
  1. Sélectionnez le fichier voulu.
  1. Cliquez sur Suivant jusqu’à pouvoir faire Reverse.

La classe Adresse apparaît dans l’arborescence mais pas encore dans le diagramme.

  1. Si vous souhaitez faire apparaître la classe dans le diagramme, glissez là de l’arborescence vers le diagramme.
  1. Pour faire apparaître les attributs, glissez-les de l’arborescence vers le diagramme. Vous pourrez ensuite agrandir la classe pour les faire apparaître tous.

Round-trip engeneering (2)

  1. Pour créer les accesseurs des attributs, cochez Getter et Setter pour chacun d’entre eux, après les avoir sélectionnés dans le diagramme ou l’arborescence du projet.

A ce point, tous les accesseurs sont créés. Mais n’appariassent pas dans le modèle. C’est en fait une bonne idée car les accesseurs alourdissent considérablement les modèles. En revanche, il est nécessaire qu’ils apparaissent dans le code Java.

  1. Pour ce faire, générez le code de la classe Adresse pour le mettre à jour.
  1. Contrôlez le code source créé.

Le code source du fichier original ayant servi au reverse-engeneering n’a pas été modifié.

En fait, tous les codes sources sont générés dans un dossier src du dossier contenant le projet TP de prise en main.

  1. Pour vous en convaincre, éditez le fichier Adresse.java de ce dossier. Supprimez dans le code source tout ce qui a trait aux commentaires.

On peut maintenant revenir à Modelio pour répercuter ces modifications sur les modèles.

  1. Mettez à jour le modèle à partir des sources.

Associations et code source

  1. Créez une composition entre Entreprise et Adresse. Pour ce faire, cliquez sur l’icône Composition dans la liste des éléments disponibles pour le diagramme.

Les compositions en UML sont traduites en variables d’instance en Java. Comme toute autre variable, on peut lui adjoindre des accesseurs.

  1. Sélectionnez la composition dans le diagramme et dans l’onglet Java, indiquez que des accesseurs sont requis.
  1. On peut bien sûr re-générer le code pour prendre en compte la nouvelle association.

Il est possible qu’une erreur soit détectée. Dans ce cas, ne mettez pas à jour le modèle à partir des sources, sans quoi vous perdriez l’agrégation (dans ce cas, refaites le travail).

A noter : cette génération a modifié le fichier source. Il faut y prendre garde dans le cas de l’emploi d’éditeurs externes rudimentaires ne gérant pas ce type de situation.

Ajout de méthodes à partir des sources

  1. Ouvrir Entreprise.java et ajouter un constructeur membre à membre.
  1. Mettre à jour le modèle pour que la nouvelle méthode soit intégrée au modèle.

Interopérabilité avec Eclipse

Utiliser des éditeurs externes c’est bien, mais utiliser Eclipse ou n’importe quel IDE, c’est tellement mieux ! Le lecteur attentif aura noté que Modelio génère le code dans un dossier src. Il se trouve qu’Eclipse rassemble également les codes sources dans un dossier src. En fait, Modelio emploie une structure de projets identique à Eclipse, ce qui permet une interopérabilité entre les deux.

  1. Pour qu’Eclipse travaille sur les fichiers générés par Modelio, il faut lui indiquer le même workspace. Pour ce faire, on change le workspace Eclipse pour qu’il soit identique à celui de Modelio.

puis

puis

Il est possible que – selon votre installation – Eclipse ne reconnaisse pas les meta-données @objid spécifiques à Modelio. Dans ce cas, il faut indiquer à Eclipse comment les utiliser, faute de quoi rien ne fonctionne :

La solution est de dézipper le fichier JavaDesigner.XXXX.jmdac qui se trouve dans le dossier mdastore de votre installation de Modelio. Vous trouverez un fichier javadesigner.jar dans un le répertoire bin de l’archive.

Ce fichier javadesigner.jar est à ajouter dans Eclipse (build path >add external archives).

Voler de ses propres ailes

Un salarié est caractérisé par un nom et un prénom. Il a une adresse et il est employé par une entreprise. Une entreprise peut employer plusieurs salariés. Les entreprises sont soit des sociétés, auquel cas elles on un capital, soit des entreprises individuelles. Toutes les entreprises ont un nom et un numéro SIRET en plus d’une adresse.

  1. Ajoutez le nécessaire au diagramme de classes pour prendre en compte ce complément au problème.

  2. Assurez-vous de la cohérence entre le code source et les modèles.