Применение специализированных строковой и контейнерной библиотек в разработке элементов графического пользовательского интерфейса системы динамического отображения векторной графики
ВВЕДЕНИЕ 4
ПОСТАНОВКА ЗАДАЧИ 8
1. Требования к проектированию элемента пользовательского
графического интерфейса 8
2. Средства проектирования элемента пользовательского графического интерфейса 9
ОБЗОР ЛИТЕРАТУРЫ 13
ГЛАВА 1. РЕАЛИЗАЦИЯ ОБРАБОТЧИКОВ ВНЕШНИХ СОБЫТИЙ
СРЕДСТВАМИ БИБЛИОТЕК STL И QT 15
1. Обработка изменения состава объектов схемы 15
1.1. Обоснование необходимости введения таблицы ObjectTab 15
1.2. Описание алгоритма обработки 16
2. Обработка изменения атрибутов объекта схемы 19
2.1. Обоснование выбора структуры данных таблицы ViewOrderTab. 20
2.2. Модификация кода, обусловленная введением таблицы
ViewOrderTab 22
2.3. Описание алгоритма обработки 25
ГЛАВА 2. РЕАЛИЗАЦИЯ ОБРАБОТЧИКОВ ВНЕШНИХ СОБЫТИЙ
СРЕДСТВАМИ СПЕЦИАЛИЗИРОВАННЫХ БИБЛИОТЕК 27
1. Пример применения специализированной строковой библиотеки... .27
2. Обработка изменения состава объектов схемы 29
2.1. Модификация кода, обусловленная применением
специализированных библиотек 29
2.2. Описание алгоритма обработки 32
3. Обработка изменения атрибутов объекта схемы 36
3.1. Описание алгоритма обработки 36
ВЫВОДЫ 39
ЗАКЛЮЧЕНИЕ 43
Список литературы
Данная работа посвящена вопросам применения средств, использованных в разработке функциональной части системы динамического отображения векторной графики, в проектировании элементов ее пользовательского графического интерфейса.
Редактор/клиент динамического отображения векторной графики (рис. 1) является компонентом среды автоматизации создания моделирующих программных комплексов, предназначенных для проектирования сложных технологических объектов [1, 2]. Задача разработки моделирующих и тренажерных комплексов в процессе проектирования объекта моделирования накладывает ряд специфических требований на инструментальные средства ее решения. Основными среди них являются поддержка количественных характеристик моделей имитируемого объекта с числом единиц оборудования и органов управления от нескольких сотен до десятков тысяч, а также учет неопределенности состава параметров и типов моделируемых подобъектов [3, 4].
Для выполнения первого условия графическая система должна поддерживать редактирование насыщенных схем и поиск в больших пространствах имен моделируемых параметров. Соответствие второму требованию предполагает наличие возможности композиции примитивных графических объектов для образования составного объекта пользовательского типа. При этом перечень атрибутов объекта нового типа и набор управляющих его отображением параметров, будучи сформированными пользователем при создании, могут быть впоследствии изменены. Таким образом, функциональная часть системы отображения, выполняющая обмен управляющими воздействиями и реализующая устройство и взаимодействие графических объектов, нуждается в структуре, обеспечивающей гибкость их представления, а именно ассоциативном контейнере элементов сменяемого типа.
К системе отображения предъявляются требования надежности и быстродействия - управление системами моделируемого объекта и наблюдение его параметров должны осуществляться интерактивно [1], т. е. с частотой обновления кадра не менее 5 FPS. Эти требования определяют специализацию средств ее разработки. Так, быстродействие использования гибких структур становится критически зависимым от времени поиска заданного ключа в контейнере, а длительность их формирования - от скорости разбора текстовых определений графических объектов - фрагментов векторных схем открытого текстового формата. Помимо этого необходима гарантия защиты от ошибок итерирования и индексирования элементов контейнера, попыток многократного освобождения и утечек памяти. Соблюдение этих условий требует создания строковой и контейнерных библиотек, основные принципы специализации которых вкратце обозначены ниже.
Строковая библиотека использует подстроку на основе пары «указатель на
позицию - число символов» как универсальный аргумент собственных функций. Это позволяет уменьшить количество обращений к динамической памяти для размещения разделяемых буферов строковых объектов, сокращая, тем самым, длительность преобразования строковых типов при передаче аргументов и формировании возвращаемых значений [5, 6]. В результате продолжительность операций копирования и сравнения строк приближается к времени выполнения соответствующих низкоуровневых функций стандартной библиотеки.
Контейнерный класс представляет собой комбинацию двусвязного списка- владельца данных и набора индексных таблиц, минимизирующих алгоритмические издержки поиска заданного ключа [7, 8]. Модификации состава элементов списка и таблиц согласовываются на уровне их функций. Концепция владения запрещает уничтожение элементов контейнера до его собственной деструкции или явного вызова метода извлечения или удаления. Эти меры предотвращают возникновение ошибок индексирования, а последняя обеспечивает защиту от утечек памяти и попыток ее многократного освобождения. Создание неконстантного итератора сопровождается его регистрацией во внутреннем списке, что позволяет корректировать его позицию при изменении численности элементов контейнера и, тем самым, предупреждать ошибки итерирования. Предпочтение сплошного упорядоченного массива указателей на элементы контейнера в качестве индексной таблицы делает возможным увеличение скорости поиска в сравнении с альтернативными многосвязными структурами за счет высокой эффективности программно-аппаратного кэширования.
Теперь после краткого описания назначения системы динамического отображения и специфики инструментов ее разработки перейдем к содержанию настоящей работы. В данном исследовании на конкретном примере обосновывается применение библиотек не только как средства создания функциональной части системы визуализации расчета, но и как инструмента проектирования и повышения производительности одного из элементов ее пользовательского графического интерфейса - панели «Список объектов схемы» (рис. 2). В главах 1 и 2 рассмотрена реализация алгоритмов обработки панелью ряда внешних событий. Глава 1 описывает использование инструментария популярных библиотек STL и Qt для оптимизации алгоритмов, отмечая издержки их применения. В главе 2 приведен код тех же обработчиков, написанный в той же последовательности рассуждений, но с помощью средств специализированных библиотек. В результате смены инструмента реализации алгоритмов были повышены надежность и быстродействие функционирования панели, что подтверждают сравнительные оценки применения средств обеих групп, представленные в разделе «Выводы» в виде графиков и численных соотношений.
Рассмотрен ряд примеров применения специализированных библиотек, позволившего унифицировать средства разработки функциональной и графической частей системы динамического отображения, обеспечить широкие функциональные возможности элементов пользовательского графического интерфейса, повысить производительность и надежность приложения, а также снизить издержки его сопровождения в сравнении со стандартными популярными средствами, предлагаемыми разработчиками библиотек STL и Qt.