<chapter id="code-import-generation"> <title >Importació de codi i generació de codi</title> <para >&umbrello; és una eina de modelat &UML;, i la seva utilitat principal és ajudar-vos en <emphasis >l'anàlisi i el disseny</emphasis > dels vostres sistemes. No obstant això, per fer la transició entre el disseny i la <emphasis >implementació</emphasis >, &umbrello; us permet generar el codi font en diversos llenguatges de programació per que pugueu començar. També, si voleu començar a usar &UML; en un projecte C++ ja iniciat, &umbrello; us pot ajudar a crear un model en el vostre sistema des del codi font analitzant el codi font i important les classes trobades. </para> <sect1 id="code-generation"> <title >Generació de codi</title> <para >&umbrello; pot generar codi font per diversos llenguatges de programació basat en el vostre model &UML; per ajudar-vos a començar amb la implementació del vostre projecte. El codi generar consisteix en la declaració de les classes, amb els seus mètodes i atributs, de manera que pugueu <quote >emplenar els espais en blanc</quote > proporcionant la funcionalitat de les operacions de les classes. </para> <para >&umbrello; 1.2 proporciona implementació de generació de codi per ActionScript, Ada, C++. CORBA IDL, &Java;, JavaScript, <acronym >PHP</acronym >, Perl, Python, SQL i XMLSchema. </para> <sect2 id="generate-code"> <title >Generant el codi</title> <para >Per tal de poder generar codi amb &umbrello; primer necessiteu crear o carregar un model que contingui almenys una classe. Quan esteu llest per començar a escriure codi, seleccioneu l'entrada <guimenuitem >Assistent de generació de codi...</guimenuitem > del menú <guimenuitem >Codi</guimenuitem > per iniciar un assistent que us guiarà a través del procés de generació de codi. </para> <para >El primer pas és seleccionar les classes per les que voleu generar el codi font. Per omissió totes les classes del model estan seleccionades, i podeu eliminar aquelles de les que no voleu generar el codi movent-les a la llista de l'esquerra. </para> <para >El següent pas de l'assistent us permet modificar els paràmetres que el generador de codi usa mentre escriu el codi. Hi ha disponibles les següents opcions: </para> <para> <screenshot> <screeninfo >Opcions de generació de codi</screeninfo> <mediaobject> <imageobject> <imagedata fileref="generation-options.png" format="PNG"/> </imageobject> <textobject> <phrase >Opcions per a la generació de codi en &umbrello;</phrase> </textobject> <caption> <para >Opcions per a la generació de codi en &umbrello; </para> </caption> </mediaobject> </screenshot> </para> <sect3 id="generation-options"> <title >Opcions de generació</title> <!-- LW; to rearrange --> <sect4> <title >Detall en els comentaris</title> <para >La opció <guilabel >Escriure comentaris de documentació encara que estiguin buits</guilabel > instrueix al generador de codi que escrigui els comentaris de l'estil /** blah */ encara que els blocs de comentaris siguin buits. Si heu afegit documentació a les classes, mètodes o atributs en el model, el generador de codi escriurà aquests comentaris com documentació <application >Doxygen</application > independentment del que hageu establert aquí, però si seleccioneu aquesta opció, &umbrello; escriurà blocs de comentaris per a totes les classes, mètodes i atributs encara que no hi hagi documentació en el model, en aquest cas haureu de documentar les classes més endavant directament en el codi font. </para> <para ><guilabel >Escriure comentaris per a les seccions encara que la secció estigui buida</guilabel > fa que &umbrello; escrigui comentaris en el codi font per a delimitar les diferents seccions d'una classe. Per exemple <quote >mètodes públics</quote > o <quote >atributs</quote > abans de les corresponents seccions. Si seleccioneu aquesta opció &umbrello; escriurà comentaris per a totes les seccions de la classes encara que la secció sigui buida. Per exemple, escriurà un comentari dient <quote >mètodes protegits</quote > encara que no hi hagi mètodes protegits en la classe. </para> </sect4> <sect4> <title >Carpetes</title> <para ><guilabel >Escriu tots els fitxers generats a una carpeta:</guilabel >. Aquí heu de seleccionar una carpeta on voleu que &umbrello; desi el codi font generat. </para> <para >La opció <guilabel >Inclou els fitxers de capçalera des de la carpeta</guilabel > permet inserir una capçalera a l'inici de cada fitxer generat. Les fitxers de capçalera poden contenir informació del copyright o informació de la llicència i contenir variables que son avaluades en temps de generació. Podeu fer un cop d'ull a la plantilla de fitxers de capçalera empaquetada amb &umbrello; per veure com usar aquestes variables per reemplaçar el vostre nom o la data actual en temps de generació. </para> </sect4> <sect4> <title >Política de sobreescriptura</title> <!-- FIXME update for Umbrello 1.2's new C++ and Java code generators --> <para >Aquesta opció li diu a &umbrello; el que ha de fer si el fitxer que vol crear ja existeix en la carpeta de destí. &umbrello; <emphasis >no pot modificar fitxers de codi font existents</emphasis >, així que heu de escollir entre sobreescriure el fitxer existent, ometre la generació d'aquest fitxer en particular o deixar que &umbrello; usi un nom diferent, &umbrello; afegirà un sufix al nom del fitxer. </para> </sect4> <sect4> <title >Llenguatge</title> <para >&umbrello; per omissió generarà el codi en el llenguatge que heu seleccionat com a llenguatge actiu, però amb l'assistent de generació de codi teniu l'opció de canviar aquest a un altre llenguatge. </para> </sect4> </sect3 ><!--generation-options--> <sect3 id="generation-wizard-generation"> <title >Estat del progrés de la generació del codi</title> <para >El tercer i últim pas de l'assistent mostra l'estat del procés de la generació del codi. Només heu de clicar en el botó Genera per que s'escriguin les classes. </para> <para >Noteu que les opcions que heu seleccionat durant l'assistent de generació de codi només son vàlides per la generació actual. La pròxima vegada que executeu aquest assistent necessitareu tornar a seleccionar totes les opcions (la carpeta de capḉaleres, la política de sobreescriptura i tot això). Podeu establir les opcions predeterminades usades per &umbrello; en la secció <guilabel >Generació de codi</guilabel > dels arranjaments de &umbrello;, disponible en <menuchoice ><guimenu >Arranjament</guimenu ><guimenuitem >Configura &umbrello;...</guimenuitem ></menuchoice > </para> <para >Si heu establert les opcions de generació de codi a les opcions correctes i voleu generar codi sense tenir que passar per l'assistent, podeu seleccionar <guimenuitem >Genera tot el codi</guimenuitem > complet del menú <guimenu >Codi</guimenu >. Això generarà codi per a totes les classes del model usant l'arranjament actual (incloent la carpeta de sortida i la política de sobreescriptura, per tant l'heu d'usar amb cura). </para> </sect3> </sect2 ><!--generate-code--> </sect1 > <!--code-generation--> <sect1 id="code-import"> <title >Importació de codi</title> <para >&umbrello; pot importar codi font dels vostres projectes existents per ajudar-vos a construir models dels vostres sistemes. &umbrello; 1.2 només implementa codi font C++, però altres llenguatges poden estar disponibles en futures versions. </para> <para >Per importar classes en el model, seleccioneu l'entrada <guimenuitem >Importa classes...</guimenuitem > del menú <guimenu >Codi</guimenu >. En el diàleg de fitxer seleccioneu els fitxers que contenen la declaració de classes C++ i premeu Obre. S'importaran les classes i podreu trobar-les com a part del model en la vista d'arbre. Noteu que &umbrello; no crearà cap tipus de diagrama per a mostrar les classes, només s'importaran en el model de manera que podeu usar-les mes tard en qualsevol diagrama que vulgueu. </para> <para> <screenshot> <screeninfo >Importació de codi</screeninfo> <mediaobject> <imageobject> <imagedata fileref="code-import.png" format="PNG"/> </imageobject> <textobject> <phrase >Menú per importar codi font en &umbrello;</phrase> </textobject> <caption> <para >Menú per importar codi font en &umbrello; </para> </caption> </mediaobject> </screenshot> </para> </sect1> </chapter > <!--code-import-generation-->