<chapter id="code-import-generation">
<title
>Quelltextimport und Quelltexterstellung</title>
<para
>&umbrello; ist ein &UML;-Modellierungswerkzeug und sein Schwerpunkt liegt deshalb auf <emphasis
>der Analyse und dem Design</emphasis
> Ihrer Systeme. Um Ihnen den Übergang zwischen Design und <emphasis
>Implementierung</emphasis
> zu erleichtern, kann &umbrello; Quelltext für verschiedene Programmiersprachen erstellen. Möchten Sie hingegen &UML; in einem bereits existierenden C++-Projekt einsetzen, unterstützt &umbrello; Sie bei der Erstellung eines Modells Ihres Systems, indem es den Quelltext analysiert und die gefundenen Klassen importiert. </para>
<sect1 id="code-generation">
<title
>Quelltexterstellung</title>
<para
>&umbrello; kann Quelltext für verschiedene Programmiersprachen auf Basis Ihres &UML;-Modells erstellen und hilft Ihnen dabei, mit der Implementierung Ihres Projekts zu starten. Der erstellte Quelltext besteht aus den Klassendeklarationen mit ihren Methoden und den Attributen. Sie müssen anschließend <quote
>diese Vorlagen ausfüllen</quote
>, um die Klassenoperationen mit Funktionalität zu füllen. </para>
<para
>&umbrello; 2 bietet Unterstützung für Quelltexterstellung für ActionScript, Ada, C++, C#, D, IDL, &Java;, JavaScript, MySQL, Pascal, Perl, PHP, PHP5, PostgreSQL, Python, Ruby, Tcl, Vala, und XMLSchema. </para>
<sect2 id="generate-code">
<title
>Quelltexterstellung</title>
<para
>Um Quelltext mit &umbrello; zu erstellen, muss man zuerst ein Modell erstellen oder laden, das mindestens eine Klasse enthält. Wenn man Quelltext erstellen möchte, muss man <guimenuitem
>Assistent für Quelltexterstellung …</guimenuitem
> aus dem Menü <guimenu
>Quelltext</guimenu
> auswählen. Dadurch wird der Assistent gestartet, der dann durch den Prozess zur Quelltexterstellung führt. </para>
<para
>Im ersten Schritt muss man die Klassen auswählen, für die Quelltext erstellt werden soll. Standardmäßig sind alle Klassen des Modells ausgewählt und man kann nun einzelne entfernen. Dazu muss man sie aus der rechten Liste in die linke Liste verschieben. </para>
<para
>Im folgenden Schritt des Assistenten kann man die Parameter des Quelltextgenerators verändern. Folgende Parameter sind verfügbar: </para>
<para>
<screenshot>
<screeninfo
>Einstellungen für Quelltexterstellung</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="generation-options.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Einstellungen für die Quelltexterstellung in &umbrello;</phrase>
	  </textobject>
	  <caption>
	    <para
>Einstellungen für die Quelltexterstellung in &umbrello; </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
<sect3 id="generation-options">
<title
>Einstellungen für Quelltexterstellung</title>
<!-- LW; to rearrange -->

<sect4>
<title
>Umfang Quelltextkommentare</title>
<para
>Der Parameter <guilabel
>Dokumentations-Kommentare erstellen, selbst wenn diese leer sind</guilabel
> weist die Quelltexterstellung an, Kommentare der Form /** bla */ einzufügen, selbst wenn diese leer sind. Hat man die Klassen, Methoden und Attribute im Modell dokumentiert, fügt die Quelltexterstellung diese Kommentare im <application
>Doxygen</application
>-Format ein, unabhängig davon, was an dieser Stelle ausgewählt wurde. Ist dieser Parameter aktiviert, werden im Unterschied allerdings für alle Klassen, Methoden und Attribute Platzhalter eingefügt, selbst wenn diese nicht im Modell dokumentiert wurden. Man sollte diese dann direkt im Quelltext in den bereits vorhandenen Platzhaltern dokumentieren. </para>
<para
><guilabel
>Kommentare für Abschnitte erstellen, selbst wenn diese leer sind</guilabel
>: &umbrello; schreibt Kommentare in den Quelltext, um die verschiedenen Bereiche einer Klasse zu trennen. So würde zum Beispiel <quote
>public methods</quote
> oder <quote
>Attributes</quote
> vor den entsprechenden Abschnitten eingefügt werden. Wenn Sie diese Einstellung aktivieren, fügt &umbrello; für jeden Abschnitt einen entsprechenden Kommentar ein, selbst dann, wenn der Abschnitt leer ist. So würde zum Beispiel der Kommentar <quote
>protected methods </quote
> eingefügt werden, selbst wenn keine geschützten Methoden in der Klasse existieren. </para>
</sect4>
<sect4>
<title
>Ordner</title>
<para
><guilabel
>Ordner zum Schreiben aller erstellten Dateien</guilabel
>: Wählen Sie hier den Ordner aus, in dem &umbrello; den erstellten Quelltext ablegen soll. </para>
<para
>Der Parameter <guilabel
>Einbeziehen der Vorlagendateien für Kopfzeilen aus Ordner</guilabel
> erlaubt es, Kopfzeilen am Anfang jeder erstellten Datei einzufügen. Vorlagendateien für Kopfzeilen können zum Beispiel Urheberhinweise oder Lizenzinformationen enthalten, sowie Variablen, die während der Quelltexterstellung entsprechend ersetzt werden. Man sollte einen Blick in die Vorlagendateien für Kopfzeilen werfen, die mit &umbrello; ausgeliefert werden. Dort kann man sehen, wie man zum Beispiel mittels Variablen das aktuelle Datum oder einen Namen einfügen kann. </para>
</sect4>
<sect4>
<title
>Vorgaben für Überschreibung</title>
<!-- FIXME update for Umbrello 1.2's new C++ and Java code generators -->
<para
>Dieser Parameter legt das Verhalten von &umbrello; fest, wenn es eine Datei während der Quelltexterstellung anlegen will, die im Zielordner bereits existiert. &umbrello; kann vorhandene Dateien <emphasis
>nicht modifizieren</emphasis
>. Man muss zwischen dem Überschreiben der existierenden Datei oder der Nachfrage, was passieren soll oder der Auswahl eines anderen Dateinamens durch &umbrello; wählen. Soll &umbrello; einen anderen Dateinamen verwenden, dann hängt &umbrello; ein Suffix an die entsprechende Datei an. </para>
</sect4>
<sect4>
<title
>Sprache</title>
<para
>&umbrello; wählt standardmäßig die von Ihnen gewählte aktive Sprache für die Quelltexterstellung aus. Sie können allerdings im Assistenten für Quelltexterstellung eine andere Sprache auswählen. </para>
</sect4>
</sect3
><!--generation-options-->
<sect3 id="generation-wizard-generation">
<title
>Assistent für Quelltexterstellung</title>
<para
>Der dritte und letzte Schritt des Assistenten zeigt den Status der eigentlichen Quelltexterstellung. Man muss lediglich auf den „Erstellen“-Knopf klicken, damit die entsprechenden Dateien mit den Klassen erstellt werden. </para>
<para
>Es ist zu beachten, dass die gesetzten Parameter nur für die aktuelle Quelltexterstellung gültig sind. Beim nächsten Aufruf des Assistenten muss man alle Parameter, wie z. B. Ordner mit Vorlagendateien für Kopfzeilen, Vorgaben für Überschreibung usw., neu einstellen. Man kann allerdings die Voreinstellungen dauerhaft über den <guilabel
>Quelltexterstellung</guilabel
>-Abschnitt in den &umbrello;-Einstellungen festlegen. Diese Einstellungen erreicht man über <menuchoice
><guimenu
>Einstellungen</guimenu
> <guimenuitem
>&umbrello; einrichten …</guimenuitem
></menuchoice
>. </para>
<para
>Hat man die Standardeinstellungen für die Quelltexterstellung bereits richtig eingestellt, kann man die Quelltexterstellung ohne den entsprechenden Assistenten direkt starten. Dazu wählt man <guimenuitem
>Alle Quelltexte erstellen</guimenuitem
> aus dem Menü <guimenu
>Quelltext</guimenu
>. Dies erstellt den Quelltext aller Klassen des Modells mit den aktuellen Einstellungen wie Ausgabeverzeichnis und Vorgaben für Überschreiben. Man sollte deshalb vorsichtig damit umgehen. </para>
</sect3>
</sect2
><!--generate-code-->
</sect1
> <!--code-generation-->
<sect1 id="code-import">
<title
>Quelltext einlesen</title>
<para
>&umbrello; kann bereits vorhandenen Quelltext eines bestehenden Projektes einlesen, um Sie beim Aufbau des Systemmodells zu unterstützen. &umbrello; 2 unterstützt Quelltext von ActionScript, Ada, C++, C#, D, IDL, &Java;, Javascript, MySQL, Pascal, PHP und Vala. </para>
<para
>Um Klassen in das aktuelle Modell zu importieren, muss man <guimenuitem
>Assistent für Quelltextimport …</guimenuitem
> aus dem Menü<guimenu
>Quelltext</guimenu
> auswählen. Im erscheinenden Dateidialog sind die Dateien auszuwählen, die die Deklarationen der Klassen enthalten und dann muss <guibutton
>Weiter</guibutton
>, <guibutton
>Import starten</guibutton
> und dann <guibutton
>Fertigstellen</guibutton
> gedrückt werden. Die Klassen werden importiert und man findet sie danach in der Baumansicht des Modells. Es ist zu beachten, dass &umbrello; beim Einlesen von Quelltext keine Diagramme anlegt, sondern lediglich die Klassen. Man kann diese nun in beliebigen Diagrammen verwenden. </para>
<para>
<screenshot>
<screeninfo
>Quelltext einlesen</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="code-import.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Dialog für das Einlesen von Quelltext in &umbrello;</phrase>
	  </textobject>
	  <caption>
	    <para
>Dialog für das Einlesen von Quelltext in &umbrello; </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
</sect1>
</chapter
> <!--code-import-generation-->
