<chapter id="code-import-generation">
<title
>Импорт и генерация кода</title>
<para
>&umbrello; — средство &UML;-моделирования, которое помогает <emphasis
>анализировать и проектировать</emphasis
> системы. Тем не менее, для обеспечения перехода от проекта к его <emphasis
>реализации</emphasis
> &umbrello; позволяет сгенерировать исходный код для различных языков программирования. Если потребуется использовать &UML; для существующего проекта на C++, с помощью &umbrello; возможно создать модель системы на основе исходного кода путём его анализа и импорта обнаруженных классов. </para>
<sect1 id="code-generation">
<title
>Генерация кода</title>
<para
>&umbrello; позволяет генерировать исходный код для различных языков программирования на основе вашей модели &UML;, помогая вам начать реализацию вашего проекта. Сгенерированный код состоит из объявлений классов с их методами и атрибутами, вам остаётся только <quote
>заполнить пустые места</quote
> для реализации функциональности классов. </para>
<para
>&umbrello; 2 поставляется с поддержкой генерации кода для ActionScript, Ada, C++, C#, D, IDL, &Java;, JavaScript, MySQL, Pascal, Perl, PHP, PHP5, PostgreSQL, Python, Ruby, Tcl, Vala и XMLSchema. </para>
<sect2 id="generate-code">
<title
>Генерация кода</title>
<para
>Для генерации кода с помощью &umbrello; сначала необходимо создать или загрузить модель, содержащую хотя бы один класс. При необходимости работы с исходным кодом выберите в меню <guimenuitem
>Код</guimenuitem
> пункт <guimenuitem
>Мастер генерации кода</guimenuitem
> для запуска мастера, который позволит пошагово выполнить процесс генерации кода. </para>
<para
>Первым шагом будет указание классов, для которых требуется сгенерировать код. По умолчанию выбираются все классы вашей модели. Классы, для которых не требуется генерировать код, следует переместить в список, расположенный в левой части окна. </para>
<para
>Следующим шагом будет модификация параметров генератора кода. Доступны следующие опции: </para>
<para>
<screenshot>
<screeninfo
>Параметры генерации кода</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="generation-options.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Параметры для генерации кода в &umbrello;</phrase>
	  </textobject>
	  <caption>
	    <para
>Параметры для генерации кода в &umbrello; </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
<sect3 id="generation-options">
<title
>Параметры генерации</title>
<!-- LW; to rearrange -->

<sect4>
<title
>Подробность комментариев</title>
<para
>В режиме <guilabel
>Вставлять комментарии в документацию, даже если они пустые</guilabel
> генератор кода будет писать комментарии вида /** тра-ля-ля */, даже если блоки комментариев пустые. Если добавить документацию в классы, методы или атрибуты модели, генератор кода запишет эти комментарии как документацию для <application
>Doxygen</application
> независимо от значения этой опции. Но если эта опция включена, &umbrello; запишет блоки комментариев для всех классов, методов и атрибутов, даже если никакой документации в модели не было. В этом случае следует задокументировать классы позднее прямо в исходном коде. </para>
<para
>Опция <guilabel
>Вставлять комментарии для секций, даже если они пусты</guilabel
> указывает &umbrello; записывать комментарии в исходный код для разграничения различных секций класса. Например, <quote
>public methods</quote
> или <quote
>Attributes</quote
> перед соответствующими секциями. Если вы включите данную опцию, &umbrello; будет записывать комментарии для всех секций класса, даже если некоторые из них будут пустыми. Например, будет записан комментарий <quote
>protected methods</quote
>, даже если в вашем классе нет методов, объявленных как <quote
>protected</quote
>. </para>
</sect4>
<sect4>
<title
>Папки</title>
<para
>Опция <guilabel
>Сохранять сгенерированные файлы в папку</guilabel
>. Здесь следует указать папку, в которую &umbrello; поместит сгенерированный исходный код. </para>
<para
>Опция <guilabel
>Подключать заголовочные файлы из папки</guilabel
> позволяет вставить заголовок в начало каждого сгенерированного файла. Заголовочные файлы могут содержать сведения об авторских правах или лицензии, а также переменные, вычисляемые во время генерации кода. Ознакомление с заголовочными файлами, поставляемыми с &umbrello;, позволит понять, как использовать эти переменные для указания имени пользователя или текущей даты во время генерации кода. </para>
</sect4>
<sect4>
<title
>Политика замены</title>
<!-- FIXME update for Umbrello 1.2's new C++ and Java code generators -->
<para
>Данная опция указывает Umbrello, что следует делать, если создаваемый файл уже существует. Umbrello <emphasis
>не позволяет изменять существующие исходные файлы</emphasis
>, таким образом, необходимо сделать выбор между перезаписью существующего файла, отменой генерации конкретного файла или выбором другого имени файла. Если принято решение выбрать другое имя файла, Umbrello добавит суффикс к текущему имени файла. </para>
</sect4>
<sect4>
<title
>Язык</title>
<para
>По умолчанию &umbrello; будет генерировать код на языке, который указан в качестве активного языка, но мастер генерации кода позволяет указать другой язык. </para>
</sect4>
</sect3
><!--generation-options-->
<sect3 id="generation-wizard-generation">
<title
>Генерация кода в мастере генерации</title>
<para
>Третий и последний шаг помощника показывает состояние процесса генерации кода. Остаётся только нажать кнопку «Генерировать», чтобы получить классы в виде исходного кода. </para>
<para
>Следует отметить, что параметры, которые вы выбрали в мастере генерации кода, действительны только для текущего сеанса. При следующем запуске мастера потребуется заново указать все опции (папку с заголовочными файлами, политику замены и так далее). Возможно настроить значения по умолчанию в разделе <guilabel
>Генерация кода</guilabel
> параметров настройки &umbrello;, доступном в меню <menuchoice
><guimenu
>Настройка</guimenu
> <guimenuitem
>Настроить &umbrello;...</guimenuitem
></menuchoice
> </para>
<para
>Если после настройки параметров генерации кода следует сгенерировать код без использования помощника, выберите пункт <guimenuitem
>Генерировать весь код</guimenuitem
> в меню <guimenu
>Код</guimenu
>. В этом случае будет сгенерирован код для всех классов модели с использованием текущих значений параметров (включая папку вывода и политику замены, так что используйте эту функцию с осторожностью). </para>
</sect3>
</sect2
><!--generate-code-->
</sect1
> <!--code-generation-->
<sect1 id="code-import">
<title
>Импорт кода</title>
<para
>С помощью &umbrello; возможно импортировать исходный код существующих проектов для облегчения построения моделей систем. &umbrello; 2 поддерживает исходный код на языке ActionScript, Ada, C++, C#, D, IDL, &Java;, Javascript, MySQL, Pascal, PHP и Vala. </para>
<para
>Для импорта классов в модель выберите пункт <guimenuitem
>Мастер импорта кода...</guimenuitem
> в меню <guimenu
>Код</guimenu
>. В диалоге выбора файлов укажите файлы, содержащие объявления классов, и нажмите кнопку <guibutton
>Далее 
></guibutton
>, затем <guibutton
>Начать импорт</guibutton
> и <guibutton
>Завершить</guibutton
>. Классы будут импортированы и появятся в виде элементов модели в дереве модели. Следует отметить, что &umbrello; не создаёт никакой диаграммы для отображения классов, они просто импортируются в модель, что позволяет в дальнейшем использовать их при построении любых диаграмм. </para>
<para>
<screenshot>
<screeninfo
>Импорт кода</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="code-import.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Меню для импорта исходного кода в &umbrello;</phrase>
	  </textobject>
	  <caption>
	    <para
>Меню для импорта исходного кода в &umbrello; </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
</sect1>
</chapter
> <!--code-import-generation-->
