<chapter id="code-import-generation">
<title
>Importação e Geração de Código</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
>Geração de Código</title>
<para
>O &umbrello; pode gerar código para várias linguagens de programação, baseando-se no seu Modelo &UML; para o ajudar a iniciar a implementação do seu projecto. O código gerado consiste nas declarações das classes, com os seus métodos e atributos, de modo a que você possa <quote
>preencher as lacunas</quote
>, fornecendo a funcionalidade das operações das suas classes. </para>
<para
>O &umbrello; 1.2 vem com o suporte de geração de código para ActionScript, Ada, C++, IDL de CORBA, &Java;, JavaScript, <acronym
>PHP</acronym
>, Perl, Python, SQL e XMLSchema. </para>
<sect2 id="generate-code">
<title
>Gerar Código</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
>O primeiro passo é seleccionar as classes para as quais deseja gerar código-fonte. Por omissão, todas as classes do seu modelo estão seleccionadas e remover as que não quer gerar, passando-as para a lista do lado esquerdo. </para>
<para
>O próximo passo do assistente permite-lhe modificar os parâmetros que o Gerador de Código usa ao criar o seu código. Estão disponíveis as seguintes opções: </para>
<para>
<screenshot>
<screeninfo
>Opções de Geração de Código</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="generation-options.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Opções de Geração de Código no &umbrello;</phrase>
	  </textobject>
	  <caption>
	    <para
>Opções de Geração de Código no &umbrello; </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
<sect3 id="generation-options">
<title
>Opções de Geração</title>
<!-- LW; to rearrange -->

<sect4>
<title
>Verbosidade do Código</title>
<para
>A opção <guilabel
>Escrever os comentários de documentação mesmo que vazios</guilabel
> diz ao Gerador de Código para criar os comentários do tipo /** blá blá */ , mesmo que os blocos de comentários estejam vazios. Se você tivier adicionado documentação às suas classes, métodos ou atributos do seu modelo, o Gerador de Código irá escrever esses comentários como documentação do <application
>Doxygen</application
>, independentemente do que tenha indicado aqui, mas se você seleccionar esta opção, o &umbrello; irá escrever os blocos de comentários para todas as classes, métodos e atributos, mesmo que não exista nenhuma documentação no modelo, onde neste caso deverá documentar as suas classes mais tarde no próprio código-fonte. </para>
<para
>A opção <guilabel
>Escrever os comentários para as secções mesmo que estas estejam vazias</guilabel
> faz com que o &umbrello; escreva os comentários no código-fonte para delimitar as várias secções de uma classe. Por exemplo, os <quote
>métodos públicos</quote
> ou os <quote
>Atributos</quote
> antes das secções correspondentes. Se você seleccionar esta opção, o &umbrello; irá escrever os comentários de todas as secções da classe, mesmo que a secção esteja vazia. Por exemplo, iria escrever um comentário a dizer <quote
>métodos protegidos</quote
>, mesmo que estes não existam na sua classe. </para>
</sect4>
<sect4>
<title
>Pastas</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
>Política de Sobreposição</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
>Linguagem</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
>Assistente de Geração - Geração</title>
<para
>O terceiro e último passo do assistente mostra o estado do processo de Geração de Código. Você só terá de carregar no botão Gerar para ficar com as classes criadas para si. </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
>Se você tiver configurado as suas opções de Geração de Código para os valores correctos e quiser gerar já algum código sem ter de percorrer o assistente, você poderá seleccionar a opção <guimenuitem
>Gerar Todo o Código</guimenuitem
> do menu Código. Isto irá gerar o código para todas as classes do seu modelo com as opções actuais (incluindo a Pasta do Resultado e a Política de Sobreposição, por isso use isto com cuidado). </para>
</sect3>
</sect2
><!--generate-code-->
</sect1
> <!--code-generation-->
<sect1 id="code-import">
<title
>Importação de Código</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
>Importação de Código</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-->
