<chapter id="code-import-generation">
<title>Importación y generación de código</title>
<para>umbrello; es una herramienta de modelado UML, y como tal, su propósito principal es el de ayudar en el <emphasis>análisis y diseño</emphasis> de sus sistemas. Sin embargo, para realizar la transición entre el diseño y la <emphasis>implementación</emphasis>, &umbrello; permite la generación de código fuente en diferentes lenguajes de programación como ayuda inicial. Además, si desea utilizar UML en un proyecto C++ ya iniciado, &umbrello; puede ayudarle a crear una maqueta de su sistema a partir del código fuente realizando un análisis del código e importando las clases encontradas en el. </para>
<sect1 id="code-generation">
<title>Generación de código</title>
<para>&umbrello; puede generar código fuente en varios lenguajes de programación, a partir de la maqueta UML para ayudar a comenzar la implementación de su proyecto. El código generado consta de declaraciones de clases con sus métodos y atributos, de forma que usted pueda <quote>rellenar los espacios en blanco</quote> proporcionando la funcionalidad de las operaciones de sus clases. </para>
<para>&umbrello; 1.2 viene provisto con soporte para la generación de código en ActionScript, Ada, C++, CORBA IDL, &Java;, JavaScript, <acronym>PHP</acronym>, Perl, Python, SQL y XMLSchema. </para>
<sect2 id="generate-code">
<title>Generación de código</title>
<para>Para generar código con &umbrello;, en primer lugar hay que crear o cargar una maqueta que contenga al menos una clase. Una vez que este listo para comenzar a escribir el código, seleccione el <guimenuitem>Asistente de generación de código</guimenuitem> en el menú <guimenuitem>Código</guimenuitem> para iniciar un asistente que le guiará a través del proceso de generación de código. </para>
<para>El primer paso es seleccionar las clases para las que desea generar código fuente. De forma predeterminada se seleccionan todas las clases de la maqueta, y usted puede eliminar aquellas para las que no desea generar código eliminándolas de la lista de la izquierda. </para>
<para>El siguiente paso del asistente le permite modificar los parámetros que el generador de código utilizará en el proceso. Las opciones disponibles son las siguientes: </para>
<para>
<screenshot>
<screeninfo>Opciones de generación de código</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="generation-options.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase>Opciones para la generación de código en &umbrello;</phrase>
	  </textobject>
	  <caption>
	    <para>Opciones de generación de código en &umbrello; </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
<sect3 id="generation-options">
<title>Opciones de generación</title>
<!-- LW; to rearrange -->

<sect4>
<title>Comentado del Código</title>
<para>La opción <guilabel>Escribir comentarios de documentación aún si está vacía</guilabel> instruye al Generador de código a escribir comentarios del tipo   /** blah */ aún cuando el bloque de comentarios se encuentre vacío. Si usted ya agregó documentación a sus clases, métodos o atributos en su Maqueta, el Generador de código escribirá estos comentarios como documentación <application>Doxygen</application> sin importar lo que haya definido aquí, pero si selecciona esta opción &umbrello; escribirá comentarios para todas sus clases, métodos y atributos aún cuando no exista documentación en la Maqueta, en cuyo caso usted deberá documentar sus clases más tarde editando directamente el código fuente. </para>
<para><guilabel>Escribir comentarios para las secciones incluso si la sección está vacía</guilabel> producirá que &umbrello; escriba comentarios en el código fuente para delimitar las diferentes secciones de una clase. Por ejemplo <quote>Métodos públicos</quote> o <quote>Atributos </quote> antes de la sección correspondiente. Si selecciona esta opción &umbrello; escribirá los comentarios para todas las secciones de las clases aún si la sección está vacía. Por ejemplo, escribirá un comentario diciendo <quote>Métodos protegidos</quote> aún si no existen métodos protegidos en su clase. </para>
</sect4>
<sect4>
<title>Carpetas</title>
<para><guilabel>Escribir todos los archivos generados a la carpeta</guilabel>. Aquí debe seleccionar la carpeta donde desea que &umbrello; guarde los archivos fuente generados. </para>
<para>La opción <guilabel>Incluir archivos de cabecera desde la carpeta</guilabel> le permite insertar un encabezado al comienzo de cada archivo generado. Los archivos de encabezado pueden contener información acerca del copyright o la licencia, y contener variables que son evaluadas al momento de generación. Usted puede puede mirar a modo de ejemplo los archivos de encabezamiento distribuidos con &umbrello; para ver como se utilizan estas variables para reemplazar su nombre o la fecha y hora del momento de generación. </para>
</sect4>
<sect4>
<title>Política de sobreescritura</title>
<!-- FIXME update for Umbrello 1.2's new C++ and Java code generators -->
<para>Esta opción le dice a &umbrello; qué hacer si el archivo que desea crear ya existe en la carpeta de destino. &umbrello; <emphasis>no puede modificar archivos fuente existentes</emphasis>, por lo que debe elegir entre sobreescribir el existente, saltar la generación de ese archivo en particular, o dejar que &umbrello; elija un nombre diferente para el archivo. Si uste elije la opción de utilizar un nombre diferente, &umbrello; agregará un sufijo al nombre del archivo. </para>
</sect4>
<sect4>
<title>Lenguaje</title>
<para>&umbrello; generará por omisión código fuente en el lenguaje que usted haya seleccionado como Lenguaje activo, pero con el Asistente para la generación de código usted tiene la opción de cambiar esto a otro idioma. </para>
</sect4>
</sect3><!--generation-options-->
<sect3 id="generation-wizard-generation">
<title>Asistente para la generación de código</title>
<para>El tercero y ultimo paso del asistente le mostará el estado del proceso de generación de código. Usted necesitará hacer click en el botón de Generación de código para que las clases sean escritas para usted. </para>
<para>Recuerde que las opciones que seleccione en el asistente de generación de código sólo son válidas para esa generación en concreto, la siguiente vez que ejecute el asistente deberá volver a seleccionar todas las opciones aunque sean las mismas. Puede evitar esto definiendo en la sección <guilabel>Generación de código</guilabel> del menú <menuchoice><guimenu>Preferencias</guimenu><guimenuitem>Configurar modelador de UML &umbrello;...</guimenuitem></menuchoice>. </para>
<para>Si ha ha establecido las opciones del asistente de generación de código y quiere generar directamente algún código sin el asistente, seleccione <guimenuitem>Generar todo el código</guimenuitem> desde el menú Código. Esto generará código para todas las clases de su esquema con la configuración actual (incluso la carpeta de salida y las opciones de sobreescritura así que tenga cuidado). </para>
</sect3>
</sect2><!--generate-code-->
</sect1> <!--code-generation-->
<sect1 id="code-import">
<title>Importación de código</title>
<para>&umbrello; puede importar código fuente de sus pryectos actuales para ayudarle a crear los esquemas de sus sistemas. &umbrello; 1.2 sólo puede hacerlo con C++ aunque en el futuro estará disponible para más lenguajes. </para>
<para>Para importar clases en su esquema seleccione la entrada <guimenuitem>Importar clases</guimenuitem> desde el menú <guimenu>Código</guimenu>. Una vez ahí, seleccione los archivos que contengan las declaraciones de clases de C++ y pulse aceptar. Se importaran las clases y pasarán a ser parte de su esquema en la vista en árbol. Recuerde que &umbrello; no creará ningún tipo de diagrama para mostrar sus clases, sólo las importará a su esquema para que pueda usarlas luego en cualquier diagrama. </para>
<para>
<screenshot>
<screeninfo>Importación de código</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="code-import.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase>Menú para importación de código en &umbrello;</phrase>
	  </textobject>
	  <caption>
	    <para>Menú para la importación de código fuente en &umbrello; </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
</sect1>
</chapter> <!--code-import-generation-->
