UML-Assoziationsbeziehungen

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.

UML-Generalisierungsbeziehungen

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"). 

UML-"Verwendungs"-Beziehungen

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. 

UML-"implements"-Beziehungen

Eine UML-Klasse kann eine UML-Schnittstelle implementieren. Diese Beziehung wird zu einer öffentlich zugänglichen Vererbung für C++-Klassen.

UML-Schablonenparameter

Eine UML-Klasse mit Schablonenparametern wird in eine Schablonenklasse umgesetzt.

UML-"Bindungs"-Beziehungen (instanziierte Klassen)

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.

Übersicht

Rechtliche Hinweise | Feedback
(C) Copyright IBM Corporation 2004. Alle Rechte vorbehalten.