Bei der Umsetzung wird eine UML-Operation als Methode ihrer Klasse generiert. Dabei werden folgende UML-Eigenschaften verwendet:
Eigenschaft |
C++ |
Name |
Name der Methode (Gültigkeitsprüfung für Namen wird angewendet) |
Visibility |
Bestimmt die Sichtbarkeit der Methode |
IsAbstract |
Generiert die Methode als rein virtuelle Methode. |
IsQuery |
Generiert die Methode als "const" (fügt "const" zum Suffix der Operation hinzu). |
IsStatic |
Generiert die Methode mit Klassenbereich statt mit Exemplarbereich (fügt das Schlüsselwort "static" zum Präfix der Operation hinzu). |
Die generierte C++-Methode erhält den Typ des von der UML-Operation zurückgegebenen Parameters. Wenn kein Parameter zurückgegeben wird, wird angenommen, dass der zurückgegebene Typ der Methode "void" ist (mit Ausnahme von Standardoperationen). Wenn eine Operation keinen oder mehr als einen Parameter zurückgibt, wird eine Warnmeldung ausgegeben.
Sie können verschiedene C++-spezifische Eigenschaften angeben, indem Sie das Stereotyp "cpp_operation" auf die UML-Operation anwenden:
· isInline: Die Umsetzung generiert die Operation als Inline-Operation (der Hauptteil der Operation wird zum Header hinzugefügt).
· isVirtual: Deklariert die Operation als virtuelle Funktion.
· isFriend: Generiert eine friend-Operation.
In C++ ist es nicht zulässig, dass ein statisches Qualifikationsmerkmal mit dem Qualifikationsmerkmal "virtual" oder "friend" kombiniert wird. Für die Codegenerierung bevorzugt die Umsetzung statische Qualifikationsmerkmale.
Bei der Umsetzung werden UML-Parameter in Argumente von C++-Operationen umgesetzt. Bei der Umsetzung werden keine Parameter des Typs "return" generiert. Sie werden aber als Indikator für den von der Operation zurückgegebenen Typ verwendet. Bei der Umsetzung wird der Parametertyp in einen Argumenttyp umgesetzt.
Bei der Umsetzung werden Parameter mit einer Anweisung "out" oder "in/out" in Referenzen umgesetzt (das heißt, zur Typspezifikation wird das Qualifikationsmerkmal "&" hinzugefügt).
Bei der Umsetzung wird der Standardwert des Parameters verwendet, um den Standardwert des Arguments der C++-Operation anzugeben.
Optional könne Sie das Stereotyp "cpp_type" auf einen UML-Parameter anwenden. Dieses Stereotyp hat ein Attribut "qualifier", das Sie verwenden können, um eine Zeichenfolge als Qualifikationsmerkmal ("qualifier") für den generierten Typ einzugeben.
Die folgenden Beispiele zeigen, wie sich bestimmte Bedingungen auf das Codeergebnis auswirken:
· Wenn der Operationstyp angegeben ist (zum Beispiel Klasse1) und Sie kein Qualifikationsmerkmal angeben und das Stereotyp nicht anwenden, wird für das Attribut folgender Code generiert: "Klasse1 <ArgumentName>".
· Wenn der Operationstyp nicht angegeben wird, Sie das Stereotyp "cpp_type" anwenden und für "qualifier" die Zeichenfolge "int " angeben, wird folgender Code generiert: "int <ArgumentName>".
· Wenn der Operationstyp angegeben wird (Klasse1), Sie das Stereotyp "cpp_type" anwenden und für "qualifier" die Zeichenfolge " * const " angeben, wird folgender Code generiert: "Klasse1 * const <ArgumentName>".
Bei der Umsetzung werden UML-Klassen, die von Parametern verwendet werden, zur include-Liste hinzugefügt.
Bei der Umsetzung werden die Parameter in der vom Modellserver zur Verfügung gestellten Reihenfolge generiert.