Bei der Umsetzung werden Assoziationsbeziehungen im C++-Code in "member"-Variablen umgesetzt. Bei Assoziationen, die keine Kompositionsassoziationen sind, wird bei der Umsetzung das Pointerzeichen ("*") zum "qualifier" des Attributtyps hinzugefügt. Wenn Sie Multiplizität angeben und eine bestimmte Zahl dafür festlegen (mit demselben unteren und oberen Bereich) wird bei der Umsetzung eine Array-Spezifikation zum Attribut hinzugefügt.
Bei der Umsetzung werden folgende Assoziationen und Eigenschaften für die Codegenerierung verwendet:
Eigenschaft |
C++ |
Name |
Erstellt eine neue Mitgliedsvariable mit dem angegebenen Namen (mit Gültigkeitsprüfung des Namens). |
Visibility |
Bestimmt die Sichtbarkeit der generierten Mitgliedsvariable. |
Standardmäßig wird bei der Umsetzung öffentlich zugängliche Vererbung für das Ziel der UML-Generalisierungsbeziehung generiert. Bei der Umsetzung werden automatisch die Headerdateien für das Ziel in die generierte Headerdatei mit "include" eingebunden. Die C++-Umsetzung unterstützt mehrfache Vererbungen.
Sie können das Stereotyp "cpp_generalization" anwenden, um die Sichtbarkeit der Generalisierungsbeziehung anzugeben ("public", "protected", "private" und "default").
Typischerweise weist eine "Verwendungs"-Beziehung auf eine Referenz auf die Klasse oder Aufzählung hin. Standardmäßig wird eine Verwendungsbeziehung in einen Vorverweis in der generierten Headerdatei und eine "include"-Anweisung in der Hauptteildatei umgesetzt.
Wenn Sie das Stereotyp "cpp_dependency" anwenden und für das Attribut "isInclusionInHeader" den Wert Wahr angeben, wird bei der Umsetzung die "include"-Anweisung" in der Headerdatei generiert.
Sie können eine "Verwendungs"-Beziehung nutzen, um "friend"-Beziehungen zwischen Klassen anzuzeigen, indem Sie das Stereotyp "cpp_friend" auf die Beziehung anwenden. Bei der Umsetzung wird die "friend"-Anweisung in die generierte Headerdatei eingefügt (zum Beispiel: "friend class Klasse1;"). Bei der Umsetzung wird kein Rumpfhauptteil für die "friend"-Funktionen generiert. Im generierten Code wird automatisch eine Abhängigkeit von der "friend"-Klasse hinzugefügt.
Eine UML-Klasse kann eine UML-Schnittstelle implementieren. Diese Beziehung wird zu einer öffentlich zugänglichen Vererbung für C++-Klassen.
Eine UML-Klasse mit Schablonenparametern wird in eine Schablonenklasse umgesetzt.
Bei der Umsetzung werden UML-Klassen mit einer "Bindungs"-Beziehung mit einem Ziel von Klasse1 als eine Instanziierung der Schablonenklasse Klasse1 betrachtet. Zur Auflösung der formalen Parameter in die tatsächlichen Parameter wird bei der Umsetzung die von der "Bindungs"-Beziehung angegebene Parametersubstitution verwendet.
Wenn einen Klasse mehr als eine "Bindungs"-Beziehung hat, wird eine Warnung angezeigt. Wenn eine Klasse mehr als eine "Bindungs"-Beziehung hat, wir bei der Umsetzung die erste davon zur Codegenerierung verwendet.
Bei der Umsetzung werden die Datentypen der tatsächlichen Parameter zur include-Liste der instanziierten Klasse hinzugefügt.
Die folgende Abbildung zeigt die Instanziierungsbeziehung, die von der Umsetzung unterstützt wird. Dabei ist eine Klasse eine parametrisierte Klasse und eine andere eine instanziierte Klasse.
Die Umsetzung unterstützt keine komplexeren Verwendungsmuster von Schablonenklassen, wie statische Variablen in Schablonen und parametrisierte Klassen, die als formale Parameter verwendet werden.