Beispiel: Generieren von C++-Code
In diesem Beispiel wird gezeigt, wie Sie mit UModel C++-Code generieren. Zuerst werden wir ein einfaches UModel-Projekt erstellen, es für die Codegenerierung konfigurieren und anschließend den eigentlichen Code generieren.
Erstellen eines neue UModel-Projekts und seiner Struktur
Klicken Sie im Menü Datei auf Neu. Daraufhin wird ein leeres Projekt mit zwei Standardpaketen ("Root" und "Component View") erstellt. Klicken Sie als nächstes auf das "Root"-Paket und erstellen Sie einige weitere Pakete, wie unten gezeigt. (Wenn Sie mit der grafischen Benutzeroberfläche von UModel noch nicht vertraut sind, lesen Sie zuerst die Kapitel UModel Tutorial und Anleitung zur Modellierung von....)
In diesem Beispiel dient das Paket "Design-Ansicht" als Container für alles, was das Design Ihres Modells betrifft (z.B. Klassen und Klassendiagramme), während das Paket "MeinNamespace" als Namespace für alle Klassen, die erstellt werden sollen, verwendet wird. Die Paketstruktur ist jedoch nicht vorgeschrieben, Sie können Ihre Pakete bei Bedarf auch anders strukturieren.
Klicken Sie mit der rechten Maustaste auf das Paket "Design-Ansicht" und wählen Sie im Kontextmenü den Befehl Code Engineering | Als C++ Namespace Root definieren. Wenn Sie gefragt werden, ob das C++-Profil auf das Paket angewendet werden soll, klicken Sie zur Bestätigung auf OK. Das in UModel vordefinierte C++-Profil wird nun in das Projekt inkludiert.
Klicken Sie als nächstes auf das Paket "MeinNamespace" und aktivieren Sie im Fenster "Eigenschaften" das Kontrollkästchen <<namespace>>. Dadurch wird das "namespace"-Stereotyp auf das Paket angewendet und sein Symbol ändert sich in . Sie können jetzt unter diesem Namespace Klassen erstellen.
Erstellen von C++-Klassen
Sie können Klassen entweder direkt über das Fenster "Modell-Struktur" oder über ein Klassendiagramm erstellen. In diesem Beispiel werden wir über das Fenster "Diagramm-Struktur" ein Klassendiagramm erstellen, wie unten gezeigt.
In diesem Beispiel wird vorausgesetzt, dass alle Ihre Klassen unter dem Namespace "MeinNamespace" generiert werden. Wenn Sie daher aufgefordert werden, einen Owner für das Diagramm auszuwählen, wählen Sie das Paket "MeinNamespace" (wie unten gezeigt) aus. Wenn Sie ein anderes Paket auswählen, gehören alle Elemente, die Sie zum Diagramm hinzufügen zum selben Paket wie das Diagramm (was nicht notwendigerweise beabsichtigt ist). |
Erstellen Sie als nächstes die Klassen, Typen und andere in Ihrem Modell benötigte Elemente, z.B. ein einfaches Diagramm, in dem eine Klasse namens Car dargestellt wird:
Beachten Sie im Diagramm oben die Enumeration ColorType und den Datentyp string. Diese Typen sind keine C++-Grundtypen, daher sind sie im C+-Profil, das in UModel vordefiniert ist, nicht enthalten. Aus diesem Grund müssen sie im Modell explizit mit Hilfe der Symbolleisten-Schaltflächen Enumeration bzw. Datentyp erstellt werden. Im Gegensatz dazu stehen Grundtypen (wie int oder bool) automatisch während der Eingabe zur Auswahl, siehe auch Typ-Autokomplettierung in Klassen. Eine schrittweise Anleitung zum Erstellen von Klassen und ihren Mitgliedern finden Sie in den Kapiteln Klassendiagramme und Anleitung zur Modellierung von....
Konfigurieren des Projektcodes für das Code Engineering
Klicken Sie mit der rechten Maustaste auf das Paket "Component View" und fügen Sie eine neue Komponente (d.h. eine Software-Komponente) hinzu. Klicken Sie auf die neue Software-Komponente und definieren Sie im Fenster "Eigenschaften" die folgenden Eigenschaften:
•Codesprache der Komponente (in diesem Beispiel "C++ 14")
•Codegenerierungsverzeichnis (in diesem Beispiel "C:\codegen").
Stellen Sie außerdem sicher, das die Eigenschaft "für Code-Engineering verwenden" auf True gesetzt ist.
Erstellen Sie als nächstes zwischen den Klassen, anhand welcher C++-Code generiert werden muss (in diesem Beispiel Car und ColorType) und der Code Engineering-Komponente eine Komponentenrealisierungsbeziehung . Sie können dies entweder von einem Komponentendiagramm aus oder auf die folgende, einfachere Weise tun:
•Klicken Sie im Fenster "Modell-Struktur" auf die Klasse, die von der Komponente realisiert werden soll (in diesem Beispiel Car und ColorType) und ziehen Sie sie mit der Maus auf die Code Engineering-Komponente (Komponente1).
Führen Sie denselben Schritt auch für die Klasse ColorType durch.
Anmerkung: | Falls Sie vergessen haben, für eine Klasse eine Komponentenrealisierungsbeziehung zu erstellen, generiert UModel dennoch die entsprechende Codedatei, gibt im Fenster "Meldungen" aber Warnungen aus. Diese Einstellung kann über Extras | Optionen | Register Code Engineering konfiguriert werden (Name des Kontrollkästchens ist Fehlende Komponentenrealisierungen generieren). |
Generieren von C++-Code
Sie können den eigentlichen C++-Code nun generieren. Gehen Sie dazu folgendermaßen vor:
1.Klicken Sie im Menü Projekt auf Merge Programmcode aus UModel-Projekt. (oder drücken Sie alternativ dazu F12). Daraufhin wird ein Dialogfeld angezeigt, in dem Sie einstellen können, ob Änderungen im Modell mit denjenigen im Code zusammengeführt oder diese gegebenenfalls überschreiben sollen. Die Codeeinstellungen können für dieses Beispiel unverändert übernommen werden, da der Code hier zum ersten Mal generiert wird. Nähere Informationen dazu finden Sie unter Codesynchronisierungseinstellungen.
2.Klicken Sie auf OK. Das Ergebnis des Code Engineering wird im Fenster "Meldungen" angezeigt.