Что такое конструктор классов?

С помощью средства конструктора классов в Visual Studio можно создавать, визуализировать и рефакторинг схем классов в проектах C#, Visual Basic или C++. Схемы классов показывают элементы кода и их связи в области визуального конструктора, которые помогут лучше понять структуру проекта и реорганизовать код.

Примечание.

Конструктор классов пока недоступен в проектах .NET Core.

Сведения о схемах классов

Вот что можно сделать с схемами классов, более подробно:

  • Разработка: редактируйте код своего проекта путем редактирования схемы классов. Добавляйте новые и удаляйте ненужные элементы. Внесенные изменения будут отражены в коде.

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

  • Рефакторинг: переопределяйте методы, переименовывайте идентификаторы, выполняйте рефакторинг параметров, реализуйте интерфейсы и абстрактные классы.

Просмотр типов и отношений

В диаграмме классов отображаются сведения о типах, например о составляющих их элементах и отношениях между ними. Визуализация этих сущностей является динамическим представлением кода. Это означает, что можно изменять типы в конструкторе, а затем просматривать эти правки в исходном коде сущности. Аналогичным образом диаграмма классов синхронизируется с изменениями, вносимыми в файлы с кодом.

Примечание.

Если проект содержит схему классов и проект ссылается на тип, расположенный в другом проекте, схема классов не отображает указанный тип, пока проект не будет построен для этого типа. Аналогичным образом схема не отображает изменения в коде внешней сущности, пока не перестроите проект для этой сущности.

Процесс создания диаграммы классов

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

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

Помимо определения того, что отображается на каждой схеме классов, можно также изменить способ представления информации; Дополнительные сведения см. в разделе "Настройка схем классов".

После точной настройки одной или нескольких схем классов можно скопировать их в документы Microsoft Office и распечатать или экспортировать в виде графических файлов. Дополнительные сведения см. в разделе "Копирование элементов схемы классов" в документ Microsoft Office, схемы классов печати и схемы классов "Экспорт" в виде изображений.

Примечание.

Конструктор классов не отслеживает расположение исходных файлов, поэтому изменение структуры проекта или перемещение исходных файлов в проекте может привести к потере отслеживания типа конструктора классов, особенно исходного типа типа, базовых классов или типов ассоциаций. Может возникнуть ошибка вида Конструктору классов не удалось отобразить этот тип. В этом случае перетащите измененный или перемещенный исходный код в схему классов и повторно отобразите ее.

Добавление диаграмм классов в проекты

Для проектирования, изменения и рефакторинга классов и других типов добавьте в проект C# , Visual Basic или C++ диаграмму классов. Для визуализации различных частей кода в проекте добавьте в проект несколько диаграмм классов.

Диаграммы классов не могут быть созданы для проектов с общим кодом для нескольких приложений. Сведения о создании схем классов UML см. в разделе Создание проектов и схем моделирования UML.

Установка компонента "Конструктор классов"

Если у вас не установлен компонент Конструктор классов, выполните следующие действия, чтобы установить его.

  1. Откройте Visual Studio Installer из меню "Пуск" или выбрав в строке меню Visual Studio Инструменты>Получить инструменты и функции.

    Откроется Visual Studio Installer.

  2. Если у вас уже установлена Visual Studio, нажмите кнопку "Изменить " из параметров.

  3. Выберите вкладку Отдельные компоненты и затем прокрутите вниз до категории Средства для работы с кодом.

  4. Выберите Конструктор классов и нажмите Изменить.

    Screenshot of the Class Designer component in the Visual Studio Installer.

    Screenshot of the Class Designer component in the Visual Studio Installer.

    Начнется установка компонента Конструктор классов.

Добавление пустой схемы классов в проект

  1. В обозревателе решений щелкните узел проекта правой кнопкой мыши и выберите пункт Добавить>Новый элемент. Либо нажмите клавиши CTRL+SHIFT+A. Если небольшое окно отображается только с параметром добавления файла кода, нажмите кнопку "Показать все шаблоны ".

    Откроется диалоговое окно Добавление нового элемента.

  2. Разверните узел "Общие", а затем выберите схему классов из списка шаблонов. Для проектов Visual C++ шаблон Схема классов находится в категории Служебные программы.

    Примечание.

    Если шаблон Схема классов отсутствует, выполните действия по установке компонента Конструктор классов в Visual Studio.

    В конструкторе классов откроется схема классов, и в обозревателе решений появится файл с расширением .cd. Можно перетаскивать фигуры и линии в диаграмму из панели элементов.

Чтобы добавить несколько схем классов, необходимо повторить шаги данной процедуры.

Добавление диаграммы классов на основе существующих типов

В Обозреватель решений откройте контекстное меню файла (щелкните правой кнопкой мыши) и выберите "Просмотреть схему классов".

–или–

В представлении классов откройте контекстное меню пространства имен или типа и выберите пункт Просмотр схемы класса.

Совет

Если представление классов не открыто, откройте его из меню Вид. Или нажмите клавиши CTRL+SHIFT+C.

Отображение содержимого всего проекта в схеме классов

В обозревателе решений или в представлении классов щелкните проект правой кнопкой мыши и выберите Просмотр, а затем — Просмотр схемы класса.

Будет создана автоматически заполняемая диаграмма классов.

Важно!

Конструктор классов пока недоступен в проектах .NET Core.

Настройка диаграмм классов

Способ отображения информации схемой классов можно изменить. В рабочей области конструирования можно настроить всю схему или отдельные типы.

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

Примечание.

Настройка способа отображения фигур на схеме не приводит к изменению кода типов, представленных на ней.

Разделы, содержащие члены типов, например раздел Properties класса, называются секциями. Отдельные секции и члены типов можно скрывать или отображать.

Увеличение или уменьшение масштаба отображения схемы классов

  1. Откройте и выберите файл диаграммы классов в конструкторе классов.

  2. Чтобы изменить уровень масштабирования области конструктора, нажмите кнопку Увеличить или Уменьшить на панели инструментов конструктора классов.

    or

    Укажите конкретное значение масштабирования. Для этого можно воспользоваться раскрывающимся списком Масштаб или ввести допустимый уровень масштабирования (в диапазоне от 10 % до 400 %).

    Примечание.

    Изменение уровня масштабирования не влияет на масштаб печати схемы классов.

Настройка способа группировки и сортировки членов типа

  1. Откройте и выберите файл диаграммы классов в конструкторе классов.

  2. Щелкните правой кнопкой мыши пустую часть области конструктора и наведите указатель на пункт Участники группы.

  3. Выберите один из трех доступных вариантов.

    • Группировка по типу разделяет отдельные члены типа в сгруппированный список свойств, методов, событий и полей. Отдельные группы зависят от определения сущностей: например, класс не отображает группу событий, если для этого класса нет событий.

    • Группировка по доступу разделяет отдельные члены типа в сгруппированный список модификаторов доступа членов. Например, общие и частные.

    • Сортировать по алфавиту отображает элементы, из которых состоит сущность, в виде единого упорядоченного в алфавитном порядке списка. Список сортируется в порядке возрастания.

Скрытие секций в типе

  1. Откройте и выберите файл диаграммы классов в конструкторе классов.

  2. Щелкните правой кнопкой мыши категорию членов в типе, которую требуется настроить (например, выберите узел Методы в классе).

  3. Щелкните Скрыть ячейку.

    Выбранная секция исчезнет из контейнера типа.

Скрытие отдельных членов в типе

  1. Откройте и выберите файл диаграммы классов в конструкторе классов.

  2. Правой кнопкой мыши щелкните член в типе, который требуется скрыть.

  3. Щелкните Скрыть.

    Выбранный член исчезнет из контейнера типа.

Отображение скрытых секций и членов в типе

  1. Откройте и выберите файл диаграммы классов в конструкторе классов.

  2. Правой кнопкой мыши щелкните имя типа, содержащего скрытую секцию.

  3. Щелкните Показать все члены.

    Все скрытые секции и члены появятся в контейнере типа.

Скрытие отношений

  1. Откройте и выберите файл диаграммы классов в конструкторе классов.

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

  3. Выберите Скрыть для линий связи или Скрыть линию наследования для линий наследования.

  4. Щелкните Показать все члены.

    Все скрытые секции и члены появятся в контейнере типа.

Отображение скрытых отношений

  1. Откройте и выберите файл диаграммы классов в конструкторе классов.

  2. Правой кнопкой мыши щелкните имя типа, содержащего скрытые линии связи или наследования.

    Щелкните Показать все члены для линий связи либо Показать базовый класс или Показать производные классы для линий наследования.

Удаление фигуры со схемы классов

Фигуру типа можно удалить из схемы классов, не затронув соответствующий код типа. Удаление фигур типов на схеме классов влияет только на такую схему: базовый код, определяющий тип и другие схемы, отображающие тип, не влияют.

  1. На схеме классов выберите фигуру типа, которую необходимо удалить из схемы.

  2. В меню Правка выберите команду Удалить из схемы.

    Фигура типа и все линии связи или наследования, соединенные с фигурой, больше не будут отображаться на схеме.

Удаление фигуры типа и ее кода

  1. Щелкните правой кнопкой мыши на рабочей области конструирования.

  2. В контекстном меню выберите команду Удалить код.

    Фигура удаляется из схемы, а ее базовый код удаляется из проекта.

Копирование элементов диаграммы классов в документ Microsoft Office

Можно копировать фигуры из схемы классов .NET (файл .cd) в другие документы. В зависимости от типа документа, в который выполняется вставка, при вставке будет получена либо копия фигуры, либо ее базовый код. Сведения о копировании фигур из схем классов UML в проекте моделирования см. в статье Экспорт схем в виде изображений.

Копирование одного элемента

Щелкните фигуру правой кнопкой мыши и выберите пункт Копировать изображение.

Копирование нескольких элементов

  1. Выберите на схеме фигуры, которые требуется скопировать.

  2. Щелкните выбранные фигуры правой кнопкой мыши и выберите пункт Копировать изображение.

Копирование всех элементов в схеме классов

  1. Щелкните правой кнопкой мыши область схемы и выберите команду "Выбрать все" или нажмите клавиши CTRL+A.

  2. В меню Правка выберите Копировать изображение.

Можно также выбрать команду Копировать вместо Копировать изображение. Команда Копировать копирует изображение как обычный точечный рисунок. Команда Копировать изображение копирует изображение как векторное изображение, что лучше подходит для большинства приложений Office.

Экспорт диаграмм классов в виде изображений

Чтобы экспортировать схему классов, созданную на основе кода в проекте, сохраните ее как изображение. Если вместо этого нужно экспортировать схемы класса UML, см. статью Экспорт схем в виде изображений.

Экспорт схем

  1. Откройте файл со схемой классов (.cd).

  2. В меню Схема классов или в контекстном меню области схемы выберите пункт Экспортировать схему как рисунок.

  3. Выберите схему.

  4. Выберите нужный формат.

  5. Выберите Экспорт, чтобы завершить экспорт.

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

Схему классов можно распечатать с помощью функции печати Visual Studio.

Печать схемы классов

  1. Откройте схему классов.

  2. В меню Файл выберите команду Печать.

Будет распечатана вся схема классов. При необходимости печати на бумаге соответствующего размера может потребоваться корректировка настроек в диалоговом окне Параметры страницы.

Добавление комментариев в диаграммы классов

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

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

Вы можете изменить размер фигуры комментариев, но изменить другие аспекты его внешнего вида, например цвет фона, шрифт или размер шрифта.

Добавление комментария

  1. Перетащите комментарий из панели инструментов конструктора классов на схему классов.

  2. Щелкните новую фигуру комментария на схеме и введите нужный текст.

Использование сочетаний клавиш и мыши в окне "Схема классов" и "Сведения о классах"

Вы можете использовать клавиатуру в дополнение к мыши для навигации в конструкторе классов и окне Сведения о классах.

Использование мыши в конструкторе классов

В схемах классов поддерживаются следующие действия мыши.

Комбинации мыши Контекст Description
Дважды щелкните Shape - элементы Открывает редактор исходного кода.
Дважды щелкните Соединитель без описания операций Интерфейс развертывания и свертывания без описания операций.
Дважды щелкните Метка соединителя без описания операций Вызывает команду Показать интерфейс
Колесико мыши Диаграмма классов Вертикальная прокрутка.
SHIFT + колесико мыши Диаграмма классов Горизонтальная прокрутка.
CTRL + колесико мыши Диаграмма классов Изменение масштаба.
CTRL+SHIFT + щелчок Диаграмма классов Изменение масштаба.

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

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

  • Если щелкнуть любую изменяемую ячейку, можно изменить ее содержимое. Изменения будут отражены во всех местах, где данные хранятся или отображаются, в том числе в окне Свойства и в исходном коде.

  • Если щелкнуть любую ячейку строки, в окне Свойства появятся свойства элемента, представленного этой строкой.

  • Чтобы изменить ширину столбца, перетащите границу справа от заголовка столбца до требуемой ширины столбца.

  • Можно развернуть или свернуть узлы секции или свойств, щелкнув символы со стрелками слева от строки.

  • В окне Сведения о классе есть несколько кнопок для создания членов в текущем классе и для перехода между секциями членов в таблице окна Сведения о классе.

Использование клавиатуры в конструкторе классов

В схемах классов поддерживаются следующие действия клавиатуры.

Ключ. Контекст Description
Клавиши со стрелками Внутри фигур типа Древовидная навигация по содержимому фигуры (поддерживается обтекание фигуры). Левый и правый ключи разворачивают и свернут текущий элемент, если он можно развернуть и перейти к родительскому элементу, если нет (см. навигацию в виде дерева для подробного поведения).
Клавиши со стрелками Фигуры верхнего уровня Перемещение фигур на схеме.
SHIFT+клавиши со стрелками Внутри фигур типа Формирование непрерывного выделения, состоящего из элементов фигур, например членов, вложенных типов или секций. Следующие сочетания клавиш не поддерживают обтекание.
Домашняя страница Внутри фигур типа Переход к заголовку фигуры верхнего уровня.
Домашняя страница Фигуры верхнего уровня Переход к первой фигуре на схеме.
Окончание Внутри фигур типа Переход к последнему отображаемому элементу внутри фигуры.
Окончание Фигуры верхнего уровня Переход к последней фигуре на схеме.
SHIFT+HOME Внутри фигуры типа Выбор элементов в фигуре, начиная с текущего и заканчивая верхним элементом той же фигуры.
SHIFT+END Внутри фигуры типа То же, что и SHIFT+HOME, но в направлении сверху вниз.
Введите Все контексты Вызывает действие по умолчанию для фигуры, которое также доступно с помощью двойного щелчка мыши. В большинстве случаев это представление кода, но некоторые элементы определяют его по-разному (интерфейсы без описания операций, заголовки секции, метки без описания операций).
+ и -. Все контексты Если элемент в фокусе можно развернуть, эти клавиши развертывают или сворачивают элемент.
> Все контексты В элементах с дочерними элементами этот элемент расширяется, если он свернут и переходит к первому дочернему элементу.
< Все контексты Переход к родительскому элементу.
ALT+SHIFT+L Внутри фигур типа и на фигурах типа. Перейдите к lollipop выбранной фигуры, если она присутствует.
ALT+SHIFT+В Внутри фигур типа и на фигурах типа. Если список базовых типов отображается на фигуре типа и содержит более одного элемента, это сочетание переключает состояние развертывания списка (развернут или свернут).
Удалить На фигурах типа и комментария Вызывает команду Удалить из схемы
Удалить В любом другом месте. Вызывает команду Удалить из кода (члены, параметры, сопоставления, наследование, метки без описания операций)
Ctrl+Delete Все контексты Вызывает команду Удалить из кода для выделенного элемента
Вкладка Все контексты Переход к следующему дочернему элементу того же родительского элемента (поддерживает обтекание).
Shift+Tab Все контексты Переход к предыдущему дочернему элементу того же родительского элемента (поддерживает обтекание).
ПРОБЕЛ Все контексты Переключает выбор в текущем элементе.

Использование клавиатуры в окне "Сведения о классах"

Примечание.

Следующие ключевые привязки имитируют интерфейс ввода кода.

Используйте следующие клавиши для перемещения в окне Сведения о классах.

Ключ. Результат
, (запятая) Если курсор находится в строке параметров, введите запятую, чтобы переместить курсор в поле «Имя» следующего параметра. Если курсор находится в последней строке параметра метода, он перемещает курсор <в поле добавления> параметров, которое можно использовать для создания нового параметра.

Если курсор находится в другом месте в окне Сведения о классах, ввод запятой приводит к добавлению запятой в текущее поле.
; (точка с запятой) или ) (закрывающая круглая скобка) Перемещает курсор в поле "Имя" следующей строки члена в таблице окна Сведения о классах.
Вкладка Перемещает курсор к следующему полю, сначала двигаясь слева направо и затем сверху вниз. Если курсор перемещается из поля, в котором у вас есть типизированный текст, сведения о классе обрабатывают текст и сохраняют его, если он не создает ошибку.

Если курсор находится в пустом поле, <например добавление параметра>, tab перемещает его в первое поле следующей строки.
ПРОБЕЛ Перемещает курсор к следующему полю, сначала двигаясь слева направо и затем сверху вниз. Если курсор находится в пустом поле, например <добавить параметр>, он переходит к первому полю следующей строки. Обратите внимание, что пробел> вводится сразу после того, как <запятая игнорируется.

Если курсор находится в поле «Сводка», ввод пробела добавляет символ пробела.

Если курсор находится в столбце «Скрыть» данной строки, ввод пробела меняет состояние флажка «Скрыть».
CTRL+TAB Переход к следующему окну документа. Например, переход из окна Сведения о классах к открытому файлу кода.
Esc Если вы уже начали вводить текст в поле, нажатие клавиши ESC отменяет эту операцию и возвращает предыдущее содержимое поля. Если окно "Сведения о классах" имеет общий фокус, но в фокусе не находится ни одна из конкретных ячеек, нажатие клавиши ESC перемещает фокус с окна Сведения о классах.
СТРЕЛКА ВВЕРХ и СТРЕЛКА ВНИЗ Эти клавиши перемещают курсор от строки к строке по вертикали в таблице окна Сведения о классах.
СТРЕЛКА ВЛЕВО Если курсор находится в столбце "Имя", нажатие стрелки влево свернет текущий узел в иерархии (если он открыт).
СТРЕЛКА ВПРАВО Если курсор находится в столбце "Имя", нажатие стрелки вправо расширяет текущий узел в иерархии (если он свернут).

Совет

Полный список сочетаний клавиш см. в разделе "Сочетания клавиш" в Visual Studio.