La transformation génère une opération UML comme une méthode de sa classe, et utilise les propriétés UML suivantes :
Propriété |
C++ |
Nom |
Nom de la méthode (la validation de nom s'applique) |
Visibilité |
Détermine la visibilité de la méthode |
IsAbstract |
Génère la méthode comme purement virtuelle |
IsQuery |
Génère la méthode comme const (ajoute "const" au suffixe de l'opération) |
IsStatic |
Génère la méthode avec la classe au lieu de la portée d'instance (ajoute le mot clé statique au préfixe de l'opération) |
Le type de paramètre de retour de l'opération UML devient le type de la méthode C++ générée. S'il n'existe pas de paramètre de retour, le type de retour de la méthode est supposé vide (excepté pour les opérations standard). Un avertissement apparaît pour les opérations sans paramètres de retour ou avec plusieurs paramètres de retour.
Vous pouvez préciser plusieurs propriétés propres à C++ en appliquant le stéréotype cpp_operation à l'opération UML :
· isInline : la transformation génère l'opération comme ligne d'entrée (ajoute le corps d'opération à l'en-tête)
· isVirtual : déclare l'opération comme une fonction virtuelle
· isFriend : génère une opération amie
C++ ne permet pas à un qualifiant statique d'être associé à un qualifiant virtuel ou à un qualifiant ami. Pour des raisons de génération de code, la transformation préfère un qualifiant statique.
La transformation transforme les paramètres UML en arguments d'opérations C++. La transformation ne génère pas de paramètres avec un type "retour", mais elle les utilise comme type de retour de l'opération. La transformation transforme le type de paramètre en type d'argument.
La transformation transforme les paramètres ayant un sens "externe" ou "interne/externe" en références (ce qui signifie qu'elle ajoute un qualifiant "&" à la spécification de type).
La transformation utilise la valeur par défaut du paramètre pour préciser la valeur par défaut de l'argument de l'opération C++.
Eventuellement, vous pouvez appliquer le stéréotype cpp_type à un paramètre UML. Ce stéréotype a un attribut qualifiant que vous pouvez utiliser pour entrer n'importe quelle chaîne comme un qualifiant pour le type généré.
Les exemples suivants montrent comment certains incidents affectent le code résultant :
· Si le type d'opération est précisé (par exemple, Class1), et que vous ne spécifiez pas le qualifiant ou n'appliquez pas le stéréotype, le code généré pour l'attribut est "Class1 <ArgumentName>".
· Si le type d'opération n'est pas précisé, vous appliquez le stéréotype cpp_type et si vous définissez la chaîne de qualifiant en "int ", le code généré est "int <ArgumentName>".
· Si le type d'opération est précisé (Class1), vous appliquez le stéréotype cpp_type et si vous définissez la chaîne de qualifiant en " * const ", le code généré est "Class1 * const <ArgumentName>".
La transformation ajoute les classes UML qui sont utilisées par les paramètres à la liste d'inclusion.
La transformation génère les paramètres dans l'ordre fourni par le serveur de modèle.