Поделиться через


Создание кода из UML-схем классов

Чтобы создать код Visual C# .NET из схем класса UML в Visual Studio Ultimate, используйте команду Создать код. По умолчанию команда создает тип C# для каждого выбранного типа UML. Это поведение можно изменить и расширить, изменив или скопировав текстовые шаблоны для создания кода. Можно задать другое поведение для типов, которые содержатся в разных пакетах модели.

Команда Создать код хорошо подходит для создания кода из выбранных пользователем элементов и создания отдельных файлов для каждого UML-класса или другого элемента. Например, на снимке экрана показаны два файла C#, созданные из двух UML-классов.

Кроме того, если требуется создать код, в котором сформированные файлы не находятся в отношении 1:1 с UML-элементами, имеет смысл создать текстовые шаблоны, которые вызываются командой Преобразовать все шаблоны. Дополнительные сведения об этом методе см. в разделе Практическое руководство. Создание файлов из модели UML.

Схема классов UML и созданные файлы класса C#.

Дополнительные сведения о UML-схемах классов в Visual Studio Ultimate см. в следующих разделах:

Использование команды создания кода

Следующая процедура описывает поведение команды Создать код по умолчанию:

Создание отдельного файла для каждого элемента

  1. Создайте UML-модель, содержащую классы. Возможно, потребуется применить к элементам модели стереотипы.

    Дополнительные сведения см. в разделе Преобразования создания кода по умолчанию.

  2. На схеме классов или в окне Обозреватель моделей UML выберите элементы, из которых требуется создать код. Можно выбрать один из следующих вариантов:

    • Конкретный набор элементов.

    • Пакет или модель для создания кода из содержимого пакета или модели.

    • Схема, на которой можно выбрать все элементы.

  3. Откройте контекстное меню выбранного элемента и щелкните Создать код.

    При первом использовании команды Создать код в определенной модели отобразится диалоговое окно. Это диалоговое окно позволяет изменять параметры создания кода модели.

    Если не требуется изменять никакие параметры, нажмите кнопку ОК.

    Чтобы вернуться к этому диалоговому окну позже, откройте контекстное меню схемы и щелкните Настроить параметры создания кода по умолчанию. Дополнительные сведения см. в разделе Настройка команды создания кода.

Создаются файлы, содержащие код C#. В сценарии по умолчанию для каждого типа создается отдельный файл. Такие файлы создаются в проекте библиотеки классов C#. Однако можно выполнить пользовательскую настройку такого поведения. Дополнительные сведения см. в разделе Настройка команды создания кода.

С моделью выполняются некоторые проверочные тесты, позволяющие убедиться, что модель можно преобразовать в C#. Если модель не проходит тесты, отображается сообщение об ошибке, создание кода не выполняется. Если была создана команда меню проверки, код создается только для элементов, успешно прошедших такую проверку. Для получения дополнительной информации см. Практическое руководство. Определение ограничений проверки для моделей UML.

Преобразования создания кода по умолчанию

В этом разделе дается сводное описание результатов выполнения команды Создать код в случаях, когда пользовательская настройка команды не выполнялась. Дополнительные сведения см. в разделе Настройка команды создания кода.

  • Для каждого выбранного в UML-модели типа создается один тип C#. Каждый тип помещается в отдельный файл кода в папке GeneratedCode.

  • Если UML-тип содержится в пакете, созданный тип C# помещается в пространство имен, а файл создается в папке, имя которой совпадает с именем пространства имен.

  • Свойство C# создается для каждого атрибута Attribute UML-класса.

  • Метод C# создается для каждой операции Operation UML-типа.

  • Поле C# создается для каждой ассоциации с возможностью перехода, в которой участвует класс.

Добавление стереотипов в каждый UML-тип позволяет контролировать больше свойств созданного типа C#.

Создание типа C#

Использование UML-типа

Применение стереотипа

Класс

Класс

<none> или

класс C#

Интерфейс

Интерфейс

<none> или

интерфейс C#

Перечисление

Перечисление

<none> или

C# enum

Делегат

Класс

делегат C#

Структура

Класс

C# struct

Задание стереотипа в типе или другом элементе

  1. Откройте контекстное меню элемента на схеме или в области Обозреватель моделей UML и щелкните Свойства.

  2. В окне Свойства щелкните стрелку раскрывающегося списка для свойства Стереотипы и установите флажок напротив стереотипа, который требуется применить.

    Совет

    Если стереотипы C# не отображаются, включите профиль C# для модели или пакета, содержащего нужные элементы модели.В окне Обозреватель моделей UML выберите пакет или корень модели.Затем в окне Свойства выберите Профиль и включите профиль C#.

  3. Разверните свойство Стереотипы, чтобы просмотреть дополнительные свойства, которые можно задать.

Свойства Описание для типов, атрибутов, операций и ассоциаций записываются в комментарии <summary> в созданном коде. Элементы комментариев, связанные с типами, записываются в комментарии <remarks>.

Варьирование созданного кода

Созданный код варьируется в зависимости от свойств каждого типа, атрибута или операции. Например, если присвоить свойству класса Абстрактный значение true, в созданном классе будет отображаться ключевое слово abstract. Если присвоить свойству атрибута Кратность значение 0..*, созданное свойство будет иметь тип IEnumerable<>.

Кроме того, каждый стереотип предоставляет несколько дополнительных свойств, которые можно задать. Эти значения преобразуются в соответствующие ключевые слова в коде C#. Например, если задать значения для свойства Is Static в классе, класс C# будет static.

Чтобы задать эти дополнительные свойства, выберите класс или другой элемент на схеме. В окне "Свойства" разверните узел Стереотипы, затем разверните стереотип C#, например Класс C#. Для классов такие дополнительные свойства включают:

  • CLR-атрибуты

  • Является разделенным

  • Является статическим

  • Является небезопасным

  • Видимость пакета

Каждый атрибут и операция имеет свойства стереотипа, которые можно задать. Если свойства не отображаются в новом атрибуте, выполните команду Создать код.

Пользовательская настройка команды "Создать код"

Команда Создать код функционирует, преобразуя элементы модели с использованием набора текстовых шаблонов. Дополнительные сведения о текстовых шаблонах см. в разделе Создание кода и текстовые шаблоны T4.

Шаблоны задаются с использованием набора привязок текстовых шаблонов. Привязка текстового шаблона задает, какой шаблон нужно применить и где разместить созданные выходные данные, а также указывает другие параметры команды Создать код.

При первом выполнении команды Создать код в определенной модели к корню модели прикрепляется набор привязок шаблонов по умолчанию. Эти привязки применимы ко всем элементам модели.

Однако набор этих привязок по умолчанию можно переопределить и расширить, прикрепив пользовательские привязки к пакетам, классам или другим элементам. Привязка применима ко всем элементам, которые содержатся внутри элемента, к которому прикреплена привязка. Например, если требуется преобразовать все типы внутри определенного пакета с использованием другого набора шаблонов или сохранить выходные данные в другой папке, можно прикрепить к пакету привязки шаблонов.

Чтобы проверить привязки шаблонов, прикрепленные к элементу модели, щелкните многоточие ([...]) в свойстве Привязки шаблонов текста в окне "Свойства".

Команда Создать код применяет шаблоны к каждому выбранному элементу модели. Применяемым набором шаблонов для каждого элемента является совокупный набор шаблонов, прикрепленный к контейнерам элемента, вплоть до корня модели и включая его.

Если две привязки шаблонов в этом наборе имеют одно и то же имя, привязка в более мелком контейнере переопределяет привязку в более крупном. Например, корень модели имеет привязку с именем Class Template. Чтобы применить собственный шаблон к содержимому определенного пакета, определите собственную привязку шаблонов с именем Class Template.

К элементу модели можно применить несколько шаблонов. Из каждого элемента модели можно создать несколько файлов.

Примечание

Привязки, прикрепленные к корню модели, выполняют функции привязок по умолчанию для всех элементов модели.Чтобы просмотреть эти привязки по умолчанию, откройте контекстное меню поверхности схемы и щелкните Настроить параметры создания кода по умолчанию.Кроме того, можно выбрать корень модели в обозревателе моделей UML, а затем щелкнуть многоточие ([…]) в свойстве Привязки шаблонов текста.Привязки не отобразятся, пока команда Создать код не будет использована хотя бы однократно.Привязки шаблонов невозможно прикрепить к схеме.

Прикрепление привязок текстовых шаблонов к пакету или другому элементу модели

  1. В области Обозреватель моделей UML откройте контекстное меню элемента модели и щелкните Свойства. Как правило, привязки текстовых шаблонов прикрепляются к пакету или к корню модели.

  2. В окне Свойства нажмите кнопку с многоточием ([…]) в свойстве Привязки шаблонов текста.

    Откроется диалоговое окно Привязки текстовых шаблонов.

  3. Щелкните Добавить, чтобы создать новую привязку шаблона текста.

    -или-

    Выберите существующую привязку, чтобы изменить ее.

    Каждая привязка шаблонов определяет способ применения заданного шаблона к выбранному элементу модели и другим элементам модели, которые в нем содержатся.

  4. В диалоговом окне задайте свойства привязки текстовых шаблонов.

    Свойство

    Описание

    Имя

    Имя данной привязки. Чтобы переопределить привязку, наследованную от содержащего элементы пакета или модели, используйте имя, совпадающее с именем привязки, которую требуется переопределить.

    Перезаписать

    Если это свойство имеет значение true, существующий код перезаписывается.

    Целевое имя

    Имя создаваемого файла.

    В эту строку можно вставлять выражения, такие как {Имя} или {Имя.Владельца}. Например, можно написать: {Имя.Владельца}_{Имя}. Выражение оценивается в элементе модели. Оно может использовать свойства элементов, но не его методы. Чтобы узнать, какие свойства можно использовать, просмотрите свойства типов в Microsoft.VisualStudio.Uml.*.

    Важно!

    {Имя} или {Имя.Владельца} можно использовать только в свойстве Целевое имя.Чтобы изменить имя созданного класса, необходимо изменить шаблон.Дополнительные сведения см. в разделе Создание текстового шаблона.

    Путь проекта

    Задает путь к проекту Visual Studio, в котором будут содержаться выходные файлы преобразования. Для создания нового проекта используйте типизированные значения. Нажмите кнопку с многоточием ([…]), чтобы выбрать существующий проект.

    Если проекта не существует, будет создан новый проект. Это будет проект библиотеки классов C#.

    Для этого необходимо указать проект напрямую. Можно включить макрос переменной среды, такой как %ProgramFiles% или %LocalAppData%.

    Конечный каталог

    Папка, в которой создается целевой файл. Путь является относительным по отношению к папке проекта.

    Можно воспользоваться выражением {PackageStructure}, чтобы вставить путь, соответствующий именам содержащих элементы пакетов. Значение по умолчанию — \GeneratedCode\{PackageStructure}. Кроме того, можно включить переменные среды, например %TEMP% или %HomePath%.

    > [!IMPORTANT]
    > <P>{Структура_пакета} может использоваться только в свойстве <STRONG>Целевой каталог</STRONG>.</P>
    

    Путь к файлу шаблона

    Шаблон, который будет выполнять преобразование.

    Можно использовать предоставленные шаблоны или создать свой собственный. Предоставленные шаблоны можно найти в следующем расположении:

    …\Program Files\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Architecture Tools\Extensibility\Templates\Text\

    1. К элементу можно прикрепить любое количество привязок.

    Написание текстового шаблона

    Можно создать собственные текстовые шаблоны. Текстовые шаблоны позволяют создавать программный код или текстовые файлы любого другого вида.

    Рекомендуется начать с изменения копий стандартных шаблонов. Можно копировать шаблоны из следующих местоположений:

    …\Program Files\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Architecture Tools\Extensibility\Templates\Text\

    Сведения о текстовых шаблонах см. в следующих разделах.

    Для использования шаблонов с командой Создать код необходимо включить директиву Modeling. Например:

    <#@ Modeling ElementType="Microsoft.VisualStudio.Uml.Classes.IClass" Processor="ModelingProcessor" #>

    Атрибут ElementType определяет тип UML-элемента, к которому применим данный шаблон.

    В этом шаблоне this принадлежит временному классу со следующими свойствами:

    Следующие советы могут оказаться полезными при создании текстового шаблона. Эти сведения подробно представлены в разделе Создание кода и текстовые шаблоны T4.

    • Задать расширение имени получаемого файла можно в директиве Output. Каждому текстовому шаблону требуется отдельная директива Output.

    • Шаблон автоматически ссылается на некоторые сборки. Эти сборки включают, к примеру, System.dll и Microsoft.VisualStudio.Uml.Interfaces.dll.

      Для использования других сборок в создаваемом программном коде необходимо использовать директиву Assembly. Например:

      <#@ Assembly Name="%ProgramFiles%\Microsoft Visual Studio 12.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.ArchitectureTools.Extensibility.dll" #>

    • Некоторые пространства имен, такие как System, автоматически импортируются в программный код. Для других пространств имен можно использовать директиву Import так же, как использовалась бы инструкция using. Например:

      <#@ Import Namespace="Microsoft.VisualStudio.Uml.Classes" #>

      <#@ Import Namespace="Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml" #>

    • Используйте директиву Include, чтобы создать ссылку на текст другого файла.

    • Части шаблона, заключенные в скобки <# ... #>, выполняются командой Создать код. Части шаблона за пределами этих скобок копируются в получаемый файл. Важно различать генерирующий код и генерируемый текст. Текст может генерироваться на любом языке.

    • Выражения <#= Expressions #> оцениваются и преобразуются в строки.

    См. также

    Основные понятия

    UML-схемы классов: справочные материалы

    UML-схемы классов: правила работы

    Практическое руководство. Создание файлов из модели UML