L'objectif du projet est de générer automatiquement le source PlantUML de diagrammes de classes UML (DCA et DCC)
pour des éléments qui figurent dans un ou des packages et/ou un ou plusieurs fichiers sources Java.
Le projet inclue la définition et la réalisation d'une API et d'une commande qui utilise cette API
pour produire le source PlantUml des diagrammes.
L'API est un package Java qui définit pour chaque élément du langage UML une classe.
Cette classe permet de produire le code PlantUML pour cet élément.
Installer le projet et ouvrez le dans un IDE. Lancez le projet a l'aide du bouton run, le résultat apparaîtra dans le dossier exemples
Prendre en main
javadoc
, les doclets et leurs options afin de générer dans un fichier.puml
un diagramme énumérant les éléments sélectionnés.
- Compiler les fichiers
Java2Puml.java
etFirstDoclet.java
. - Lancer manuellement, sur la ligne de commande, la commande
javadoc
pour exécuter le docletFirstDoclet
pour le packagewestern
avec les options nécessaires (voir l'indication dansJava2Puml
). - Dans IntelliJ, configurer l'exécution de
Java2Puml
pour lancerjavadoc
et l'exécution du doclet ; compléter les arguments de la ligne de commande avec les options nécessaires - Faire un diagramme de séquence qui modélise l'appel d'un doclet
(voir la description dans la documentation de l'interface
Doclet
) - Faire un DCA et un DCC des interfaces et classes utiles pour l'utilisation des doclets.
Faire figurer uniquement les éléments qui vous semblent utiles pour la réalisation du projet. - Écrire le code d'un doclet
PumlDoclet
qui :- génére dans un fichier
.puml
un diagramme de classe (faire une classePumlDiagram
) qui comporte les classes, les interfaces et les énumérations inclus dans les éléments spécifiés. - prend en compte deux options
Doclet.Option
nommées :-out
: pour fixer le nom du fichier.puml
créé;
par défaut le nom est celui du premier élément sélectionné-d
: pour fixer le répertoire dans lequel le fichier.puml
est placé;
par défaut, ce répertoire est le répertoire courant
- génére dans un fichier
- la commande
javadoc
- l'interface
Doclet
- l'interface
Doclet.Option
- l'interface
ToolProvider
- le package
jdk.javadoc.doclet
- Using the new Doclet API
- Processing code
- javadoc Architecture
- Modéliser l'API Java Language Model
- Produire le DCA sans les associations.
A ce stade le DCA produit montre les classes, interfaces et énumérations avec les noms des attributs caractéristiques (attributs dont le type est un type primitif) et les noms des constantes pour les énumérations.
Le doclet a accès aux éléments à travers son environnement (DocletEnvironment
)
- Faire le DCC de l'API Java Language Model (package
javax.lang.model
) à partir de l'interfaceElement
(javax.lang.model.element.Element
) - Démarrer la conception de l'API
Java2Puml
pour générer le DCA sans associations - Générer le DCA sans relation pour les classes et/ou packages passés à
javadoc
Produire le DCA avec les associations :
- les généralisations et les réalisations
- les agrégations
Le DCA ne montre que les associations qui concernent les éléments spécifiés pour l'établissement du diagramme. Les associations produites ne sont pas nommées et sont données sans les multiplicités. Les généralisations et les réalisations peuvent être produites automatiquement à partir de la superclasse et des interfaces implémentées. Les agrégations sont déduites des variables d'instance et de classe qui n'ont pas un type primitif. Les agrégations ne sont pas caractérisées dans le DCA. Les relations de dépendance ne seront traitées qu'en semaine 5.
Produire un DCC sans les associations.
Ajouter au doclet une option--dca
pour demander la production du DCA .
Par défaut, le diagramme produit sera le DCC.
Le DCC produit doit :
- traiter les attributs : visibilité, nom, type UML
- traiter les opérations : visibilité, nom, avec leur paramètres et leurs types
- gérer les modificateurs (
abstract
,static
,final
) - traiter les multiplicités pour les attributs, paramètres et résultats des opérations
- l'interface
javax.lang.model.TypeElement
- l'interface
javax.lang.model.VariableElement
- l'interface
javax.lang.model.ExecutableElement
Produire le DCA et le DCC avec toutes les associations.
Le DCC produit doit :
- orienter et caractériser les associations
- traiter les rôles (nom, visibilité, multiplicité)
- rajouter les dépendances.
Le DCA produit doit :
- faire figurer les dépendances sous la forme d'une relation non nommée.
Dans le DCA, les dépendances ne sont pas caractérisées.
- Préparation du rendu final et de la présentation
-
Indiquer les redéfinitions pour les méthodes marquées
@Override
-
Utilisation des tags de documentation pour compléter manuellement certains renseignements à porter sur le diagramme de classe quand ceux-ci ne peuvent pas se trouver automatiquement dans le code.
@pumlType
pour les multiplicités@pumlAssociation
pour nommage@pumlAggregation
et@pumlComposition
... Cette extension implique la lecture et l'inspection des commentaires de documentation.