Les patterns Modeling Wizard créent des éléments par déduction à partir d'autres éléments, vous permettant ainsi de faire des gains significatifs en productivité, cohérence et traçabilité.
Par exemple, à partir d'un objet dans un diagramme de séquence, vous pouvez créer une classe dont les opérations seront déduites directement depuis des messages reçus par l'objet.
Les patterns Modeling Wizard sont activés depuis le menu contextuel “Modeling Wizard” disponible sur certains éléments dans la vue “Modèle” et dans les diagrammes Modelio.
La liste suivante présente les patterns qui sont disponibles sur les différents éléments de modèle.
Instance:
Ligne de vie:
Message:
Lien d'attribut:
Transition:
Interface:
Classe:
Le pattern “Créer un classifier à partir de cette instance” permet de créer un classifier et son contenu à partir d’une instance sélectionnée et les opérations qu’elle reçoit.
Dans l’exemple ci-dessous, nous allons créer une classe à partir de l’instance “B” et une opération à partir du message de séquence appartenant à cette instance.
Etapes :
Cliquez-droit sur l'instance “B” pour ouvrir le menu contextuel, et puis lancez la commande “ModelingWizard / Créer un classifier depuis cette instance”.
Une fenêtre Modeling Wizard apparaît alors, vous demandant de saisir un nom et un type pour le classifier que vous êtes sur le point de créer. Par défaut, le nom du classifier sera identique au nom de l'objet à partir duquel la commande est lancée, et le type sera classe. Saisissez un nom et appuyez sur “OK” pour valider.
Le cas échéant, d'autres fenêtres Modeling Wizard apparaissent, vous permettant de saisir un nom pour chaque opération que vous allez créer. Il suffit de saisir un nom puis de validant en cliquant sur “OK”.
Si l’instance porte des liens d’attributs, de nouvelles fenêtres Modeling Wizard apparaissent, permettant de saisir un nom pour chaque attribut à créer. Il suffit là encore de saisir un nom puis de valider en cliquant sur “OK”.
Le résultat de cette opération est que la classe “B” nouvellement créée apparaît dans la vue “Modèle” et également dans le diagramme de séquence en tant que classe instanciée par l'instance “B”.
Les opérations nouvellement créées apparaissent elles aussi dans la vue “Modèle” et dans le diagramme de séquence, en tant que les opérations invoquées par les messages de séquence reçus par l'instance “B”.
Les attributs créés apparaissent dans la vue “Modèle” et en tant qu'attributs de base des liens d’attributs.
Le pattern “Mettre à jour l’instance ou la part depuis un classifier existant” permet de mettre à jour le contenu d’une instance ou d’une part par rapport à un classifier.
Si l’instance ou la part instancie un classifier, elle est mise à jour par rapport à celui-ci. Ceci comprend les attributs, les ports, et les interfaces fournies et requises.
Si l’instance ou la part n’est pas liée à un classifier, il est possible d’effectuer la mise à jour par rapport à un classifier existant dans le même package.
Le pattern “Créer une opération à partir de ce message” permet de créer une opération à partir d'un message de séquence sélectionnée.
Ce pattern est lancé de la même manière que le pattern “Créer un classifier depuis cette instance” présenté plus tôt.
Après l'application du pattern, l'opération nouvellement créée apparaît dans la vue “Modèle” et également dans le diagramme de séquence (en tant que l'opération invoquée par le message de séquence sélectionné).
Le pattern “Créer un attribut à partir de cette occurrence” permet de créer un attribut à partir d'un lien d'attribut sélectionné.
Ce pattern est lancé de la même manière que le pattern “Créer un classifier depuis cette instance” présenté plus tôt.
Après l'application du pattern, l'attribut nouvellement créé apparaît dans la vue “Modèle” et également en tant que l'attribut de base du lien d'attribut sélectionné.
Le pattern “Créer une opération depuis cette transition” permet de créer une opération à partir d'une transition sélectionnée. Ce pattern ne peut être utilisé que sur les transitions dans les diagrammes d'états associés aux classes.
Ce pattern est lancé de la même manière que le pattern “Créer un classifier depuis cette instance” présenté plus tôt.
Après l'application du pattern, l'opération nouvellement créée apparaît dans la vue “Modèle” et également dans le diagramme d'états (en tant que l'expression de l'action de la transition).
Le pattern “Implémenter les propriétés des interfaces” permet la mise en œuvre automatique des services fournis par une classe interface dans une classe d'implémentation.
Dans l'exemple montré ci-dessous, nous allons lancer le pattern “Implémenter les propriétés des interfaces” sur la classe d'implémentation nommée “ImplInterface”, afin de mettre en œuvre automatiquement les trois opérations contenues dans la classe d'interface nommée “Interface1”.
Note: Assurez-vous que votre classe d'implémentation implémente bien la classe d'interface (en créant un lien d'implémentation depuis la classe d'implémentation vers la classe d'interface).
Etapes :
Cliquez-croit sur la classe d'implémentation “ImplInterface” afin d'ouvrir le menu contextuel associé.
Lancez le pattern “Implémenter les propriétés des interfaces”.
Le résultat de cette opération est que la classe d'implémentation “ImplInterface” contient maintenant les trois services appartenant à la classe d'interface “Interface1” (comme le montre la figure ci-dessous).
Le pattern “Supprimer l’implémentation des propriétés des interfaces” permet de supprimer les services fournis par une classe interface dans une classe d'implémentation.
Ce pattern est lancé de la même manière que le pattern “Créer un classifier depuis cette instance” présenté plus tôt.
Note: Ce pattern effectue le traitement inverse du pattern “Implémenter les propriétés des interfaces”.
Le pattern “Mettre à jour la structure interne” permet de mettre à jour automatiquement les parts instanciées dans la structure interne d’une classe.
Toutes les parts qui instancient un classifier sont mises à jour par rapport à celui-ci. Ceci comprend les attributs, les ports, et les interfaces fournies et requises.
Pour chaque part qui n’est pas liée à un classifier, il est possible de choisir un classifier existant dans le même package que la classe ou d’en créer un à partir de la part elle-même.
Dans l'exemple montré ci-dessous, nous allons lancer le pattern “Mettre à jour la structure interne” sur la classe “Robot”, afin de créer automatiquement la structure interne de classes, ports et interfaces fournies et requises.
Le résultat de cette opération est que la classe “Robot” contient maintenant la structure interne complète créée auparavant, comme le montre la capture d’écran ci-dessous.