Generieren von Programmcode

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Projekte und Code Engineering >

Generieren von Programmcode

Nachdem Sie das Modell Ihrer Applikation in UModel erstellt haben (z.B. ein oder mehrere Klassendiagramme), können Sie schnell ein Prototyp-Projekt generieren, das alle definierten Schnittstellen, Klassen, Operationen, usw. in der Sprache Ihrer Wahl enthält. Sie können mit UModel auf Basis der in Ihrem UModel-Projekt gefundenen Elemente (wie z.B. Schnittstellen, Klassen, Operationen, usw.) anhand Ihres Modells C++-, C#-, VB.NET- oder Java-Programmcode generieren. Dieser Vorgang wird auch als "Forward Engineering" bezeichnet. Im generierten Code werden alle Objekte genauso generiert, wie sie im Modell definiert wurden, sodass Sie zu ihrer eigentlichen Implementierung übergehen können.

 

Die Codegenerierung kann auch auf XML-Schemas und Datenbanken angewendet werden*. So könnten Sie etwa ein XML-Schema oder eine Datenbank mit UModel erstellen und anschließend die entsprechende Datei (oder das entsprechende SQL-Skript im Fall von Datenbanken) anhand des Modells generieren. Konsultieren Sie dazu die Zuordnungstabellen, um herauszufinden, welche Schema- oder Datenbankelemente UModel-Elementen zugeordnet werden, siehe UModel-Elementzuordnungen.

 

* Für die Generierung von Datenbanken benötigen Sie die UModel Enterprise oder Professional Edition.

 

 

Voraussetzungen

Damit Programmcode generiert werden kann, muss das UModel-Projekt die folgenden Mindestvoraussetzungen erfüllen:

 

Eines der Pakete in Ihrem Projekt muss als Namespace Root definiert sein (siehe Anleitung unten). Bei der Namespace Root kann es sich um einen C++, C#-, Java-, VB.NET-, XSD- oder Datenbank-Namespace handeln. Dieses Paket muss alle Klassen und Schnittstellen enthalten, anhand welcher der Code generiert werden soll.
Es muss eine Komponente geben, die von allen Klassen oder Schnittstellen, für die Code generiert werden muss, realisiert wird.
Der Komponente muss ein physisches Verzeichnis zugewiesen worden sein. In diesem Verzeichnis wird der Code generiert.
Für die Komponente muss die Eigenschaft für Code Engineering verwenden aktiviert sein.
Im Fall von Datenbanken muss zuerst über die Menüoption Projekt | SQL-Datenbank importieren eine Verbindung zur Zieldatenbank hergestellt werden. Sobald die Verbindung hergestellt ist, können Sie eine Datenbankstruktur im Modell erstellen oder ändern und die Änderungen über ein SQL-Skript in der Datenbank übernehmen (siehe auch UModel und Datenbanken).

 

Zusätzlich dazu sollten Sie eines der vordefinierten UModel-Unterprojekte für die entsprechende Sprache (oder Sprachversion) inkludieren, siehe Inkludieren anderer UModel-Projekte. Wenn Ihre Applikation z.B. für eine bestimmte Version von C#,  Java  oder VB.NET geschrieben wird, könnten Sie dadurch beim Erstellen Ihrer UML-Klassen, Schnittstellen, usw. die entsprechenden Datentypen verwenden.

 

Ein Beispiel zum Erstellen eines Projekts von Grund auf und Generieren von Code anhand des Projekts finden Sie unter Beispiel: Generieren von Java-Code anhand des Modells und Beispiel: Generieren von C++-Code.

 

 

So definieren Sie ein Paket als Namespace Root:

Klicken Sie mit der rechten Maustaste auf ein Paket in der Modell-Struktur und wählen Sie im Kontextmenü den Befehl Code Engineering | Als <...> Namespace Root definieren, wobei <...> für C++, C#, Java, VB.NET, XSD, Datenbank steht.

 

Wenn Sie ein Paket als Namespace Root definieren, informiert Sie UModel darüber, dass auch das UML-Profil der entsprechenden Sprache zum Projekt hinzugefügt und auf das ausgewählte Paket angewendet wird. Klicken Sie auf OK, um dies zu bestätigen, wenn Sie in einem Dialogfeld wie dem unten gezeigten danach gefragt werden.

um_dlg_namespace_root

 

 

So fügen Sie eine Komponente hinzu, die die gewünschten Klassen oder Schnittstellen realisiert:

1.Klicken Sie in der Modell-Struktur mit der rechten Maustaste auf ein Paket und wählen Sie im Kontextmenü den Befehl Neues Element | Komponente. Daraufhin wird die Komponente zum Modell hinzugefügt.
2.Klicken Sie in der Modell-Struktur auf die Klasse oder Schnittstelle, die von der Komponente realisiert werden soll und ziehen Sie diese anschließend mit dem Cursor auf die Komponente (in diesem Beispiel wurde Klasse1 aus Paket1 auf Komponente1 gezogen). Dadurch wird in der Modell-Struktur automatisch eine Komponentenrealsierungsbeziehung erstellt.

um_component_realization

Sie können dies auch auf eine andere Art tun, nämlich indem Sie ein Komponentendiagramm erstellen und anschließend zwischen der Komponente und den Klassen oder Schnittstellen eine Komponentenrealisierungsbeziehung ziehen. Nähere Informationen dazu finden Sie unter Komponentendiagramme.

 

 

So bereiten Sie eine Komponente für das Code Engineering vor:

1.Wählen Sie die Komponente in der Modell-Struktur aus (es wird davon ausgegangen, dass diese Komponente, wie oben erläutert, bereits von mindestens einer Klasse oder Schnittstelle realisiert wird).
2.Suchen Sie im Fenster "Eigenschaften" die Eigenschaft Verzeichnis und definieren Sie dafür den Pfad, unter dem Sie Code generieren möchten.
3.Aktivieren Sie im Fenster "Eigenschaften" das Kontrollkästchen für Code Engineering verwenden.

 

So sehen Sie etwa in der Abbildung unten, dass die Komponente Komponente1 aus dem Paket Component View so konfiguriert ist, dass damit Java 8.0 Code im Verzeichnis C:\codegen: generiert wird.

um_component_codegen


© 2019 Altova GmbH