Текущий раздел:

Описания RDS

Описание пользователя

Глава 2. Интерфейс пользователя

§2.12. Выборочное отображение блоков и связей

§2.12.2. Использование классов

# Описание пользователя

## Глава 2. Интерфейс пользователя

### §2.12. Выборочное отображение блоков и связей

#### §2.12.2. Использование классов

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

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

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

Технически, проблему можно решить, добавив с схему еще один слой для блоков-переключателей, и оставлять его включенным при работе и с логической, и с вычислительной частями схемы. Но в более сложных случаях число таких вспомогательных слоев начинает быстро расти. При двух видах блоков (логические и вычислительные) понадобился один вспомогательный слой для блоков, которые соединены и с теми, и с другими. Если бы типов блоков стало три, например, добавились бы еще интерфейсные блоки, потребовалось бы еще два вспомогательных слоя: для блоков, соединенных и с логическими, и с интерфейсными, и для блоков, соединенных и с вычислительными, и интерфейсными. При большом количестве слоев управлять ими становится неудобно.

По этой причине для управления видимостью объектов в схеме кроме слоев используются еще и классы: создаваемые пользователем множества с произвольными именами, к которым можно относить блоки, связи и шины, причем один объект может принадлежать к нескольким классам одновременно, а также не принадлежать ни к одному классу. В описанном выше примере с вычислительными и логическими блоками достаточно будет создать два класса с именами «вычислительные» и «логические»: вычислительные блоки будут относиться к классу «вычислительные», логические блоки – к классу «логические», а блоки-переключатели – к обоим классам одновременно. Тогда при отключении отображения класса «вычислительные» видимыми останутся и логические блоки, и переключатели, а при отключении отображения класса «логические» будут видимы и вычислительные блоки, и переключатели. Добавление интерфейсных блоков потребует добавления всего одного класса: «интерфейсные». Блоки, соединенные и с интерфейсными, и с блоками других видов, нужно будет просто добавить в этот класс, чтобы они тоже оставались видимыми, если включено отображение класса «интерфейсные».

Работа с классами в чем-то похожа на работу со слоями, но между классами и слоями есть следующие принципиальные отличия:

- набор слоев индивидуален для каждой подсистемы, а набор классов – общий для всей схемы (при этом видимость отдельных классов задается независимо для каждой подсистемы);
- каждый блок, каждая связь или шина должны находиться на одном и только одном слое, но могут принадлежать к нескольким классам одновременно или не принадлежать ни к одному классу;
- слои определяют и видимость объектов, и их взаимное расположение относительно переднего плана, а классы могут использоваться только для управления видимостью.

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

Рис. 225. Окно списка классов схемы

Большую часть окна занимает список, в котором отображаются имена уже имеющихся в схеме классов. Если к классу принадлежит хотя бы один объект в схеме, после имени в скобках будет выведено слово «используется». Справа от списка располагаются кнопки управления:

Кнопка | Действие
--- | ---
| Переместить выбранный класс на одну позицию вверх в списке.
| Переместить выбранный класс на одну позицию вниз в списке.
| Изменить имя выбранного класса.
| Объединить выбранные классы в один (в списке должно быть выбрано несколько классов, см. ниже).
| Добавить новый класс (имя классу дается автоматически, после создания его можно переименовать).
| Удалить выбранный класс (или выбранные классы, если в списке выбрано несколько).

Для объединения нескольких классов в один в списке должно быть одновременно выделено несколько классов. Чтобы выделить несколько классов, следует щелкнуть левой кнопкой мыши на названии первого из выделяемых классов, а затем, удерживая клавишу Ctrl, поочередно щелкать на других классах, которые требуется добавить к выделенным (первый щелчок добавляет класс к выделенным, второй – снимает с него выделение). После выделения нескольких классов кнопка объединения станет активной. Ее нажатие приведет к тому, что объединяемые классы будут удалены, и будет создан новый класс, имя которого состоит из имен объединяемых классов, перечисленных через запятую. При нажатии кнопки «OK» в окне списка классов в этот новый класс будут добавлены все объекты, ранее принадлежавшие к объединенным классам.

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

При нажатии кнопки «OK» отредактированный список классов записывается в схему и выполняются все операции по фактическому объединению и удалению классов в объектах схемы. Если в настройках RDS разрешена отмена действий пользователя, эти изменения можно отменить нажатием Ctrl + Z. Нажатие кнопки «отмена» закрывает окно без внесения изменений.

Принадлежность к классам конкретных блоков, связей и шин задается в окнах их параметров (см. §2.9.1, §2.7.2 и §2.8). Также классы могут присваиваться объектам при помощи функции групповой установки параметров.

Рис. 226. Вкладка классов
в редакторе слоев

Несмотря на то, что список классов является общим для всей схемы, параметры отображения классов, как и параметры слоев, относятся к конкретной конфигурации конкретной подсистемы. В подсистеме может быть несколько конфигураций, в каждой из которых видимость классов будет настроена по-своему, и пользователь может быстро переключаться между этими конфигурациями, выбирая нужный ему в данный момент вид блоков и связей в подсистеме. Если в схеме создан хотя бы один класс, в окне редактора слоев появляется дополнительная вкладка «классы» (рис. 226), на которой задается видимость отдельных классов, а также назначаются текущие классы, то есть классы, автоматически присваиваемые новым, создаваемым в подсистеме, объектам. В целом эта вкладка похожа на вкладку «слои». В ее верхней части располагается выпадающий список, для выбора текущей конфигурации слоев (на рис. 226 – конфигурация с именем «Основная»). Ниже находится список классов выбранной конфигурации с двумя дополнительными пунктами: «все классы» и «без классов».

Левая, самая широкая, колонка списка содержит название класса или одного из двух специальных пунктов, во второй колонке отображается признак видимости объектов данного класса в выбранной конфигурации (изображение глаза), а галочки в третьей колонке отмечают текущие классы, которые будут присваиваться новым объектам в подсистеме. Щелчки мышью в колонках видимости и текущего класса включают и выключают соответствующие признаки.

Специальный пункт «все классы» позволяет включить видимость всех классов или сделать все классы текущими. Если для этого пункта включен признак видимости, в данной конфигурации данной подсистемы будут видимы все объекты, независимо от их принадлежности к классам (при этом видимость объектов по слоям, заданная на вкладке «слои», продолжает работать, то есть объекты на невидимых слоях отображаться все равно не будут). При добавлении в схему новых классов объекты, относящиеся к ним, тоже будут становиться видимыми. Этим включение видимости пункта «все классы» отличается от индивидуального включения видимости всех классов в пунктах ниже: если включить видимость у всех имеющихся в данный момент классов по отдельности, а потом добавить в схему новый класс, объекты этого нового класса отображаться в подсистеме не будут. Если же включена видимость пункта «все классы», объекты нового класса станут видимыми сразу после добавления класса. Установка признака текущего класса для пункта «все классы» будет присваивать всем добавляемым в схему объектам все существующие на момент добавления классы.

Специальный пункт «без классов» управляет видимостью объектов, не принадлежащих ни к одному классу. Для него тоже можно установить признак текущего класса (при этом все остальные галочки в колонке текущего класса выключатся). В этом случае всем добавляемым в подсистему объектам не будут автоматически присваиваться какие-либо классы.

Справа от списка находятся кнопки управления:

Кнопка | Действие
--- | ---
| Включить видимость всех классов (нажатие этой кнопки аналогично включению видимости у пункта «все классы»).
| Выключить видимость всех классов и объектов без классов.
| Открыть окно редактирования классов.

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