25/11/2010
1
Cedric Dumoulin
Problème
Pour une classe, nous voulons spécifier:
isAbstract, isFinal,
Pour une methode:
isStatic, isFinal, isAbstract, isSynchronized, isConstructor
Pour tous les éléments UML:
author, version
idem pour les autres éléments
UML ne permet pas de spécifier directement toutes ces
propriétés !
25/11/2010
2
Proposition
Utiliser un profile UML proposant les propriétés
manquantes.
Papyrus permet de définir des profiles
Dans les transfo UML -> mjava
Proposer des méthodes pour accéder aux stéreotypes et à
leurs valeurs query
Transformer ces valeurs
Faire des librairies de methodes library
Profil
Profil :
Un profil permet de définir des <<stéréotypes>>
On applique (attache) un profil à un modèle afin de pouvoir utiliser les stéréotypes
qu’il contient
Stéréotype
Un stéréotype permet d’ajouter de l’information à un élément UML
C’est un mécanisme permettant d’étendre les éléments existants
Un stéréotype peut contenir des attributs appelés tagged values’ (valeurs
marquées)
Tagged Values (valeurs marquées)
attribut d’un stéréotype
est typé (par un type définit dans le modèle)
l’utilisateur peut lui donner une valeur
25/11/2010
3
Définir un profile
Dans Papyrus:
Créer un nouveau modèle, choisir « profile »
Créer des classes « stereotype »
Leur ajouter des propriétés
Se sera les tagged values
Elles seront accessible dans le stéreotype
Spécifier sur quelles éléments le stéreotype peut
s’appliquer :
utiliser
Profile UML pour Java
Papyrus 1
25/11/2010
4
Profile UML pour Java
Papyrus 2
Améliorer le profile
Le profile UML est un modèle UML comme les autres
Vous pouvez le modifier
pour ajouter des stéréotypes, des valeurs marquées.
25/11/2010
5
Transformer un modèle
utilisant un profile UML
Transformer un modèle
utilisant un profile UML
Il est possible :
de tester si un stéréotype est appliqué à un concept UML
de récupérer la valeur d’une valeur marquée
mapping uml::Class::Class2Class() : mjava::Class {
}
mapping uml::Class::Class2Class() : mjava::Class {
var stereotype = self.getAppliedStereotype("java::javaClass");
var isApplied = self.isStereotypeApplied(stereotype);
}
mapping uml::Class::Class2Class() : mjava:: {
}
mapping uml::Class::Class2Class() : mjava:: {
var stereotype = self.getAppliedStereotype("java::javaClass");
var isTransient = self.getValue(stereotype, "isTransient").oclAsType(Boolean);
}
1 / 9 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!