Применение специализированных строковой и контейнерной библиотек в разработке элементов графического пользовательского интерфейса системы динамического отображения векторной графики
ВВЕДЕНИЕ 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.
1. Безлепкин В. И., Кухтевич В. О., Образцов Е. П., Мигров Ю. А., Шаленинов А.
А., Деулин А. А. Программно-технический комплекс «Виртуальный энергоблок АЭС с ВВЭР» (ПТК «ВЭБ») для проверки проектных решений АЭС-2006 [Электрон. ресурс] URL: http://www.gidropress.podolsk.ru/files/ proceedings/mntk2013/documents/mntk2013-168.pdf (дата обращения: 21.10.2015).
2. Горизонты Атома (16.02.2013): Виртуальная АЭС // Информ. агентство «Российское атомное сообщество». [Электрон. ресурс] URL: http://www.atomic- energy.ru/video/40025(дата обращения 15.09.2015).
3. Калинин Д. В. Многофункциональный графический редактор видеокадров БПУ в составе моделирующего комплекса «Виртуальный энергоблок» [Электрон. ресурс] URL: http://docs.google.com/viewer?a=v&pid=sites&srcid= ZGVmYXVsdGRvbWFpbnxzaGFyaW5nc3BhY2UxNnxneDo0YWI3NTRhM2JlZT MxODE5 (дата обращения 20.02.2016).
4. Orekhov M. Yu. Specialized Container and String Systems Employment in Vector Graphics Environment Development [Электрон. ресурс] URL: http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=7342211&searchWithin=%22First%20Name%22:Mikhail&searchWithin=%22Last%20Name %22:Orekhov&newsearch=true (дата обращения: 15.02.2016).
5. Орехов М. Ю. Быстродействующая строковая система на С++ // Процессы управления и устойчивость. 2014. Т. 1, № 1. С. 363-368.
6. Орехов М. Ю. Применение подстроки в реализации быстродействующей строковой системы на С++ // Вестн. С.-Петерб. ун-та. Сер. 10. Прикладная математика. Информатика. Процессы управления. 2015. Вып. 2. С. 134-149.
7. Орехов М. Ю. Контейнерный класс для задач отображения векторной графики // Процессы управления и устойчивость. 2015. Т. 2 (18), № 1. С. 473¬478.
8. Калинин Д. В., Орехов М. Ю. Специализированная контейнерная библиотека для задач динамического отображения векторной графики // Вестн. С.-Петерб. ун-та. Сер. 10. Прикладная математика. Информатика. Процессы управления. 2016. Вып. 2. С. 45-61.
9. Бланшетт Ж., Саммерфилд М. Qt4: программирование GUI на C++. 2-е изд., доп. / пер. с англ. С. Лунина, В. Казаченко. М.: Кудиц-Пресс, 2008. 736 с.
10. Summerfield M. Advanced Qt Programming: Creating Great Software with C++ and Qt 4. Upper Saddle River, New Jersey: Addison-Wesley, 2010. 537 c.
11. Руководство по стандартной библиотеке шаблонов (STL) [Электрон. ресурс] URL: http://www.solarix.ru/for_developers/cpp/stl/stl.shtml(дата обращения: 28.05.2016).
12. Standard Template Library Programmer's Guide [Электрон. ресурс] URL: http://www.sgi.com/tech/stl/index.html(дата обращения: 29.05.2016).
13. Qt 4.8 All Classes // Qt Documentation [Электрон. ресурс] URL: http://doc.qt.io/ qt-4.8/classes.html (дата обращения: 03.06.2016).
14. Qt 5.6 All Classes // Qt Documentation [Электрон. ресурс] URL: http://doc.qt.io/ qt-5/classes.html (дата обращения: 03.06.2016).
15. Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы: построение и анализ. 3-е изд. / пер. с англ. И. В. Красикова. М.: Издат. дом «Вильямс», 2013. 1328 с.
16. Левитин А. Алгоритмы: введение в разработку и анализ / пер. с англ. С. Г. Тригуб, И. В. Красикова. М.: Издат. дом «Вильямс», 2006. 576 с.
17. Pugh W. Skip Lists: A Probabilistic Alternative to Balanced Trees // Communications of the ACM. 1990. Vol. 33, N. 6. P 668-676.
18. Общие принципы функционирования кэш-памяти // НОУ ИНТУИТ [Электрон. ресурс] URL: http://www.intuit.ru/studies/courses/604/460/lecture/10327(дата обращения: 06.04.2016).
19. Бек Л. Введение в системное программирование / пер. с англ. Н. А. Богомолова, В. М. Вязовского и С. Е. Морковина; под ред. Л. Н. Королева. М.: Мир, 1988. 448 с.