You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
171 lines
7.7 KiB
171 lines
7.7 KiB
<chapter id="code-import-generation">
|
|
<title>Code Import and Code Generation</title>
|
|
<para>
|
|
&umbrello; is a &UML; modelling tool, and as such its main purpose is to help you in the
|
|
<emphasis>analysis and design</emphasis> of your systems. However, to make the transition
|
|
between your design and your <emphasis>implementation</emphasis>, &umbrello; allows you to
|
|
generate source code in different programming languages to get you started. Also, if you
|
|
want to start using &UML; in an already started C++ project, &umbrello; can help you create a model
|
|
of your system from the source code by analysing your source code and importing the classes
|
|
found in it.
|
|
</para>
|
|
<sect1 id="code-generation">
|
|
<title>Code Generation</title>
|
|
<para>
|
|
&umbrello; can generate source code for various programming languages based on your &UML; Model
|
|
to help you get started with the implementation of your project. The code generated consists
|
|
of the class declarations, with their methods and attributes so you can <quote>fill in the
|
|
blanks</quote> by providing the functionality of your classes' operations.
|
|
</para>
|
|
<para>
|
|
&umbrello; 1.2 comes with code generation support for ActionScript, Ada, C++, CORBA IDL, &Java;, JavaScript, <acronym>PHP</acronym>, Perl, Python, SQL and XMLSchema.
|
|
</para>
|
|
<sect2 id="generate-code">
|
|
<title>Generating Code</title>
|
|
<para>
|
|
In order to generate code with &umbrello;, you first need to create or load a Model
|
|
containing at least one class. When you are ready to start writing some code, select the
|
|
<guimenuitem>Code Generation Wizard</guimenuitem> entry from the <guimenuitem>Code</guimenuitem> menu to
|
|
start a wizard which will guide you trough the code generation process.
|
|
</para>
|
|
<para>
|
|
The first step is to select the classes for which you want to generate source code.
|
|
By default all the classes of your model are selected, and you can remove the ones
|
|
for which you do not want to generate code by moving them to the left-hand side list.
|
|
</para>
|
|
<para>
|
|
The next step of the wizard allows you to modify the parameters the Code Generator uses
|
|
while writing your code. The following options are available:
|
|
</para>
|
|
<para>
|
|
<screenshot>
|
|
<screeninfo>Code Generation Options</screeninfo>
|
|
<mediaobject>
|
|
<imageobject>
|
|
<imagedata fileref="generation-options.png" format="PNG"/>
|
|
</imageobject>
|
|
<textobject>
|
|
<phrase>Options for the Code Generation in &umbrello;</phrase>
|
|
</textobject>
|
|
<caption>
|
|
<para>Options for the Code Generation in &umbrello;
|
|
</para>
|
|
</caption>
|
|
</mediaobject>
|
|
</screenshot>
|
|
</para>
|
|
<sect3 id="generation-options">
|
|
<title>Generation Options</title>
|
|
<!-- LW; to rearrange -->
|
|
|
|
<sect4>
|
|
<title>Code Verbosity</title>
|
|
<para>
|
|
The option <guilabel>Write documentation comments even if empty</guilabel> instructs the
|
|
Code Generator to write comments of the /** blah */ style even if the comment blocks are empty.
|
|
If you added documentation to your classes, methods or attributes in your Model, the
|
|
Code Generator will write these comments as <application>Doxygen</application> documentation regardless of what you set here, but
|
|
if you select this option &umbrello; will write comment blocks for all classes, methods and attributes
|
|
even if there is no documentation in the Model, in which case you should document your classes
|
|
later directly in the source code.
|
|
</para>
|
|
<para>
|
|
<guilabel>Write comments for sections even if section is empty</guilabel> causes &umbrello; to write comments
|
|
in the source code to delimit the different sections of a class. For example <quote>public methods</quote>
|
|
or <quote>Attributes</quote> before the corresponding sections. If you select this option &umbrello;
|
|
will write comments for all sections of the class even if the section is empty. For example,
|
|
it would write a comment saying <quote>protected methods</quote> even if there are no protected
|
|
methods in your class.
|
|
</para>
|
|
</sect4>
|
|
<sect4>
|
|
<title>Folders</title>
|
|
<para>
|
|
<guilabel>Write all generated files to folder</guilabel>. Here you should select the folder
|
|
where you want &umbrello; to put the generated sources.
|
|
</para>
|
|
<para>
|
|
The <guilabel>Include heading files from folder</guilabel> option allows you to insert a
|
|
heading at the beginning of each generated file. Heading files can contain copyright or licensing
|
|
information and contain variables that are evaluated at generation time. You can take a look
|
|
at the template heading files shipped with &umbrello; to see how to use this variables for replacing
|
|
your name or the current date at generation time.
|
|
</para>
|
|
</sect4>
|
|
<sect4>
|
|
<title>Overwrite Policy</title>
|
|
<!-- FIXME update for Umbrello 1.2's new C++ and Java code generators -->
|
|
<para>
|
|
This option tells &umbrello; what to do if the file it wants to create already exists in
|
|
the destination folder. &umbrello; <emphasis>cannot modify existing source files</emphasis>,
|
|
so you have to choose between overwriting the existing file, skipping the generation of
|
|
that particular file or letting &umbrello; choose a different file name. If you choose the option
|
|
to use a different name, &umbrello; will add a suffix to the file name.
|
|
</para>
|
|
</sect4>
|
|
<sect4>
|
|
<title>Language</title>
|
|
<para>
|
|
&umbrello; will by default generate code in the language you have selected as Active Language, but
|
|
with the Code Generation Wizard you have the option to change this to another language.
|
|
</para>
|
|
</sect4>
|
|
</sect3><!--generation-options-->
|
|
<sect3 id="generation-wizard-generation">
|
|
<title>Generation Wizard Generation</title>
|
|
<para>
|
|
The third and last step of the wizard shows the status of the Code Generation process.
|
|
You need only to click on the Generate button to get your classes written for you.
|
|
</para>
|
|
<para>
|
|
Note that the Options you select during the Code Generation Wizard are only valid for the current
|
|
generation. The next time you run the wizard you will need to re-select all the options
|
|
(your headings folder, overwrite policy, and so on). You can set the defaults used by &umbrello;
|
|
in the <guilabel>Code Generation</guilabel> section of the &umbrello; settings, available
|
|
at <menuchoice><guimenu>Settings</guimenu><guimenuitem>Configure &umbrello;...</guimenuitem></menuchoice>
|
|
</para>
|
|
<para>
|
|
If you have set your Code Generation options to the right settings and want to generate
|
|
some code right away without going through the wizard, you can select the entire
|
|
<guimenuitem>Generate All Code</guimenuitem> from the Code menu.
|
|
This will generate code for all the classes in your Model using the current settings
|
|
(including Output Folder and Overwrite Policy, so use with care).
|
|
</para>
|
|
</sect3>
|
|
</sect2><!--generate-code-->
|
|
</sect1> <!--code-generation-->
|
|
<sect1 id="code-import">
|
|
<title>Code Import</title>
|
|
<para>
|
|
&umbrello; can import source code from your existing projects to help you build Model of
|
|
your systems. &umbrello; 1.2 supports only C++ source code, but other languages
|
|
should be available in future versions.
|
|
</para>
|
|
<para>
|
|
To import classes into your Model, select the entry <guimenuitem>Import Classes...</guimenuitem> from
|
|
the <guimenu>Code</guimenu> menu. In the file dialog select the files containing the C++
|
|
class declarations and press OK. The classes will be imported and you will find them as part of
|
|
your Model in the Tree View. Note that &umbrello; will not create any kind of Diagram for showing
|
|
your classes, they will only be imported into your Model so that you can use them later in any
|
|
diagram you want.
|
|
</para>
|
|
<para>
|
|
<screenshot>
|
|
<screeninfo>Code Import</screeninfo>
|
|
<mediaobject>
|
|
<imageobject>
|
|
<imagedata fileref="code-import.png" format="PNG"/>
|
|
</imageobject>
|
|
<textobject>
|
|
<phrase>Menu for importing source code in &umbrello;</phrase>
|
|
</textobject>
|
|
<caption>
|
|
<para>Menu for importing source code in &umbrello;
|
|
</para>
|
|
</caption>
|
|
</mediaobject>
|
|
</screenshot>
|
|
</para>
|
|
</sect1>
|
|
</chapter> <!--code-import-generation-->
|