Altova UModel 2025 Enterprise Edition

In diesem Beispiel wird gezeigt, wie Sie mit UModel C#-Code generieren. Zuerst werden wir einen C#-Beispiel-Namespace, der einige Klassen enthält, erstellen, das Projekt für die Codegenerierung konfigurieren und anschließend den eigentlichen Code generieren.

 
Die Zielplattform in diesem Beispiel ist .NET Standard 2.0 für C# 7.1. Dies ist dank eines in UModel vordefinierten Profils, in dem alle Typen des .NET Standard 2.0 für C# 7.1 vordefiniert sind, möglich. UModel enthält auch vordefinierte Profile für bestimmte .NET Framework-Versionen, siehe auch Inkludieren von Unterprojekten.

 

Erstellen eines neue Projekts und seiner Struktur

Im ersten Schritt wird ein leeres Projekt erstellt, das zwei Standardpakete hat (Root und Component View): Klicken Sie im Menü Datei oder in der Symbolleiste auf Neu. 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.....

um_cs_codegen_01

In diesem Beispiel dient das Paket Design-Ansicht als Container für den Design-Teil Ihres Modells (z.B. Klassen und Klassendiagramme), während das Paket SampleNamespace als Namespace für alle Klassen, die erstellt werden sollen, verwendet wird. Sie können Ihre Pakete bei Bedarf auch anders strukturieren.

 

Code Engineering

Im nächsten Schritt wird C# für Ihr Paket definiert. 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. UModel informiert Sie darüber, dass das C#-Profil auf das Paket angewendet wird. Klicken Sie auf OK. Das in UModel vordefinierte C#-Profil wird nun in das Projekt inkludiert (siehe Abbildung unten).

um_cs_codegen_02

Definieren von SampleNamespace als Namespace

Klicken Sie als nächstes auf das Paket SampleNamespace 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 ic-code-pack. Sie können jetzt unter diesem Namespace Klassen erstellen.

 

Inkludieren eines Unterprojekts

Das Modell enthält bisher das C#-Profil, das die Datentypen für C# enthält. Allerdings enthält es die .NET Standard 2.0-spezifischen Datentypen noch nicht (diese stehen in einem separaten UModel-Profil zur Verfügung). Um dieses Profil zum Projekt hinzuzufügen, gehen Sie folgendermaßen vor:

 

1.Klicken Sie im Menü Projekt auf Unterprojekt inkludieren.

2.Wechseln Sie zum Register C# und wählen Sie den Eintrag .NET Standard 2.0 for C# 7.1 (types only) aus.

3.Wählen Sie im Dialogfeld Unterprojekt inkludieren Durch Referenz aus und klicken Sie auf OK.

 

Das zusätzliche Profil wurde nun zum Projekt hinzugefügt (siehe unten).

um_cs_codegen_03

 

Erstellen von C#-Klassen

Im nächsten Schritt werden Klassen erstellt. Sie können dies entweder direkt über das Fenster Modell-Struktur oder über ein Klassendiagramm tun. In diesem Beispiel haben wir uns für die zweite Option entschieden. Gehen Sie folgendermaßen vor:

 

1.Öffnen Sie das Fenster Diagramm-Struktur.

2.Klicken Sie mit der rechten Maustaste auf Klassendiagramme und wählen Sie Neues Diagramm | Klassendiagramm.

 

In diesem Beispiel wird vorausgesetzt, dass alle Ihre Klassen unter dem Namespace SampleNamespace generiert werden müssen. Wenn Sie daher aufgefordert werden, einen Owner für das Diagramm auszuwählen, wählen Sie das Paket SampleNamespace 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 von Klassen und ihrer Struktur

Erstellen Sie als nächstes Klassen, Typen und andere in Ihrem Modell erforderlichen Elemente. Sie können für unser Beispiel ein einfaches Diagramm, das eine Artist- und eine MusicStore-Klasse enthält, erstellen (siehe Abbildung unten). Gehen Sie folgendermaßen vor:

 

1.Klicken Sie mit der rechten Maustaste in das pkg SampleNamespace-Fenster und wählen Sie Neu | Klasse.

2.Geben Sie dieser Klasse den Namen Artist.

3.Klicken Sie mit der rechten Maustaste in das Kästchen Artist und erstellen Sie zwei Eigenschaften: ID von Typ int und Name vom Typ string.

4.Erstellen Sie die zweite Klasse mit dem Namen MusicStore.

5.Erstellen Sie eine Eigenschaft namens LastUpdated vom Typ DateTime.

6.Erstellen Sie eine Operation und geben Sie ihren Namen und ihre Definition, wie unten gezeigt, ein.

um_cs_codegen_05

Nähere Informationen zum Erstellen von Klassen und ihren Mitgliedern finden Sie in den Kapiteln Klassendiagramme und Anleitung zur Modellierung von....

 

Über automatisch implementierte C#-Eigenschaften

Sie sehen in UModel, ob C#-Eigenschaften automatisch implementiert wurden. Die Autoimplementierungsoption steht zur Verfügung, nachdem im Fenster Eigenschaften das Kontrollkästchen property (in unserem Beispiel für CreateTestArtist()) aktiviert wurde (siehe Abbildungen unten).

UM_GenCSCode01
UM_GenCSCode02

Hinzufügen von Dokumentation (optional)

Klicken Sie optional im Diagramm auf die Klasse MusicStore und fügen Sie durch Eingabe von Text in das Fenster "Dokumentation" Dokumentation hinzu (siehe Abbildung unten). Auf diese Art können Sie Codekommentare zu dieser Klasse generieren.

um_cs_codegen_06

 

Konfigurieren des Projekts für das Code Engineering

Im nächste Schritt müssen wir nun Code Engineering-Einstellungen definieren. Gehen Sie folgendermaßen vor:

 

1.Speichern Sie das Projekt in einem Verzeichnis.

2.Klicken Sie anschließend im Fenster Modell-Struktur mit der rechten Maustaste auf das Paket Component View und fügen Sie eine neue Komponente um_ic_component (d.h. eine Software-Komponente) hinzu.

3.Klicken Sie auf die neue Software-Komponente und definieren Sie im Fenster Eigenschaften die folgenden Eigenschaften (siehe Abbildung unten):

 

Setzen Sie die Codesprache der Komponente z.B. auf C# 7.1.

Wählen Sie das Verzeichnis für die Codegenerierung aus (C:\codegen in unserem Beispiel).

Aktivieren Sie das Kontrollkästchen für Code Engineering verwenden.

um_cs_codegen_07

Erstellen einer Komponentenrealisierungsbeziehung

Erstellen Sie als nächstes zwischen den Klassen, anhand welcher C#-Code generiert werden muss, eine Komponentenrealisierungsbeziehung um_ic_realization. Sie können dies folgendermaßen tun: Klicken Sie im Fenster Modell-Struktur auf die Klasse, die von der Komponente realisiert werden soll (in diesem Beispiel Artist) und ziehen Sie sie mit der Maus in die Code Engineering-Komponente (Komponente1) (siehe Abbildung unten). Führen Sie denselben Schritt auch für die Klasse MusicStore durch.

um_cs_codegen_08
Anmerkung: Falls Sie vergessen haben, für eine Klasse eine Komponentenrealisierungsbeziehung um_ic_realization 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 (Kontrollkästchen Fehlende Komponentenrealisierungen generieren).

 

Generieren von C#-Code

Im letzten Schritt wird nun der eigentliche C#-Code generiert. Gehen Sie folgendermaßen vor:

 

1.Klicken Sie im Menü Projekt auf Merge Programmcode aus UModel-Projekt. Daraufhin wird ein Dialogfeld angezeigt, in dem Sie einstellen können, ob Änderungen im Modell mit denjenigen im Code zusammengeführt oder diese gegebenenfalls überschrieben werden sollen. Wählen Sie in diesem Beispiel ...überschreiben, da ein neues Projekt generiert wird.

2.Damit die Klassendokumentation im generierten Code in Form von Kommentaren inkludiert wird, klicken Sie auf Projekt | Projekteinstellungen und aktivieren Sie das Kontrollkästchen Dokumentation als DocComments verfassen. Nähere Informationen dazu finden Sie unter Codegenerierungsoptionen.

3.Klicken Sie auf OK. Das Ergebnis des Code Engineering wird im Fenster Meldungen angezeigt (siehe unten).

um_cs_codegen_09

Wenn Sie zur Klasse MusicStore Dokumentation hinzugefügt haben, sehen Sie diese im generierten Code in Form von Codekommentaren:

 

using System;
using System.Collections.Generic;
namespace SampleNamespace
{
  /// This class models a music store. It contains methods to manage assets such as music tracks or artists.
  public class MusicStore
  {
    public DateTime LastUpdated;
    public List<Artist> CreateTestArtists()
    {
        // TODO add implementation
    }
  }
 
}

 

© 2018-2024 Altova GmbH