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


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

В Visual Studio Ultimate можно создать код из UML-схем классов с помощью команды Создать код. По умолчанию команда создает тип 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-типа

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

Класс

Класс

<нет> или

класс C#

Интерфейс

Интерфейс

<нет> или

интерфейс C#

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

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

<нет> или

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%.

    Важное примечаниеВажно
    {Структура_пакета} может использоваться только в свойстве Целевой каталог.

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

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

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

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

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

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

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

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

…\Program Files\Microsoft Visual Studio 11.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 11.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