Архитектура и компоненты - Разработка программы для реализации редактора временных графов синхронизации
Приложение разрабатывается в соответствии с паттерном проектирования Model-View-Presenter (MVP), который является производным от Model-View-Controller (MVC) и предназначается для использования при написании приложений с графическим интерфейсом. Особенности такого подхода заключаются в следующем:
- § Модель полностью изолирована и является исключительно предметно-ориентированной. Фактически, модель можно использовать в отрыве от интерфейса, например при встраивании в другой инструмент; § Presenter извлекает данные из модели и форматирует их для отображения в представлении. В данном случае из внутреннего представления модели сети Петри генерируются наборы графических примитивов, которые рисуются покоординатным способом на стороне отображения, без учета предметной области. В то же время Presenter занимается обработкой пользовательских событий, поступающих из отображения -- нажатие мышкой, нажатие клавиши и так далее. После обработки события Presenter изменяет модель; § Отображение отвечает за пользовательский интерфейс -- отрисовки окна, формы, кнопок и других элементов приложения в операционной среде. Здесь также обрабатываются события, поступающие от операционной среды и в зависимости от типа передаются Presenter'у. Отображение ничего не знает о предметной области, но тем не менее логика пользовательского интерфейса реализуется частично на его стороне (JavaScript, QtQuick).
Иллюстрация находится на рисунке 13.
Рисунок 13. Model-View-Presenter
Компоненты на стороне Go.
Исходя из поставленных задач и списка необходимого функционала, приложение поделено на следующие компоненты (пакеты):
Tegview -- изолированный пакет редактора сети Петри, внутри построен при помощи паттерна MVP, на Go написаны Model и Presenter. Первое окно программы создается именно на основе этого модуля. Из окна tegview может вызываться открытие других окон tegview для групп и открываемых файлов.
Planeview -- изолированный пакет редактора входных данных, реализует отображение конусов на плоскости и их редактирование, написан по подобию tegview, используется паттерн MVP, на Go написаны Model и Presenter. Из окна tegview вызывается открытие окон planeview.
Render -- пакет с типами графических примитивов и методами для работы с ними.
Geometry -- пакет с типами геометрических примитивов и методами для работы с ними.
Dioid -- пакет для работы с диоидной алгеброй. Включает в себя парсер выражений вида "g3d2 + g4d7 + g3d4 x (g1d2)*", обертку над библиотекой libminmaxgd, декларацию типов для внутреннего представления элементов алгебры.
Workspace -- пакет для управления набором открытых окон, реализован с целью контролировать максимальное количество открытых одновременно окон (существует намеренное ограничение в go-qml, при необходимости можно обойти), также обеспечить корректное завершение приложения после закрытия последнего окна.
Util -- пакет вспомогательных утилит: реализация стека, генератор UUID, конвертер hex-представления цвета из формата RGB в ARGB.
Компоненты на стороне QtQuick/QML
TegView -- реализация вида, компонент унаследован от QtQuick-компонента ApplicationWindow. Содержит инструментальную панель, панель статуса, полотно с отображением модели (сеть Петри).
PlaneView -- аналогично TegView. Содержит инструментальную панель, панель статуса, текстовое поле для редактирования элементов степенного ряда, панель выбора активного слоя и изменения видимости других, область менеджера слоев.
Plane -- менеджер слоев на декартовой плоскости. Каждый слой отображает модель (коллекцию точек) в виде конусов на плоскости, по ТЗ эти слои должны накладываться друг на друга. Содержит корневой слой (отображающий координатную сетку, оси, подписи) и коллекцию слоев, построенных по модели в Presenter'е.
PlaneLayer -- отображение слоя. Содержит полотно и методы, рисующие графические примитивы из кешированной коллекции. Коллекция кешируется на стороне QML/JavaScript из-за особенностей управления памятью при передачи объектов из Go в QML. В любом случае, без него новые данные будут заменять старые прямо в процессе отрисовки, что неправильно.
XButton, XToggle -- самостоятельная реализация кнопки (с поддержкой иконок) и кнопки-выключателя.
Похожие статьи
-
Пример с tegview ¦ L-- qml ¦ +-- tegrender. js ¦ L-- tegview. qml +-- tegview ¦ +--...
-
Обоснование выбранного метода При дизайне системы согласно требованиям или при оптимизации существующей необходимо ввести модель, позволяющую не только...
-
Стек технологий При выборе стека технологий основное внимание уделялось следующим факторам, в порядке убывания значимости: § Кроссплатформенность; §...
-
Введение - Разработка программы для реализации редактора временных графов синхронизации
Математическое моделирование дискретно-событийных динамических систем является относительно молодым направлением науки теории управления. Разработка...
-
Сравнение аналогов - Разработка программы для реализации редактора временных графов синхронизации
Поскольку конечной целью работы был редактор сетей Петри, интегрированный с внешней библиотекой алгебраических вычислений, было рациональным рассмотреть...
-
Компонент TPanel является несущей конструкцией для размещения на ней других элементов управления, являясь в этом случае родителем для размещенных на ней...
-
Множество D с двумя заданными на нем операциями (плюс) и (умножение) называется диоидом, если выполнены следующие аксиомы: § Ассоциативность. §...
-
Сеть Петри это двудольный направленный граф с маркировкой, ребра которого задают причинно-следственные отношения "события-условия" и именуются дугами....
-
Архитектура и модель, Разработка - Различные виды программ для Multi-Touch столов
Структура работы программного комплекса показана на рис. 1. Архитектурно система представляет собой набор связанных между собой приложений, состоящих из...
-
Заключение - Разработка программы для реализации редактора временных графов синхронизации
Результатом выполнения задания является реализованный редактор временных графов синхронизации (класс временных сетей Петри), соответствующий задачам,...
-
Поворот точки относительно центра на заданный угол: X = o. X + (p. X-o. X) * cos(angle) - (p. Y-o. Y) * sin(angle) Y = o. Y + (p. X-o. X) * sin(angle) +...
-
Обоснование выбора средств разработки проекта Для реализации корпоративной информационной системы "Бюджетное планирование и отчетность" в исследуемой...
-
Концепция построения программы Список всех классов приведен на рисунке 3.1. Рисунок 3.1 - Диаграмма классов программы В качестве главного класса...
-
Рисунок 10. Архитектура программы В структуре программы обработки сложноструктурированных данных для научного эксперимента в ИИС "Шлаковые расплавы"...
-
Литература - Разработка программы для реализации редактора временных графов синхронизации
1. Авдошин С. М. Оптимизация гибких производственных систем // 1987. 2. Лескин А. А. Алгебраические модели гибких производственных систем // 1986. 3....
-
В ходе исследования был разработан веб-редактор для визуального языка в соответствии с требованиями, выделенными в главе 2, по результатам опроса...
-
Основные компоненты и структура приложения Прежде чем приступить к установке и настройке среды программирования, построению технического задания и...
-
Реализация клиентской части приложения На языке JavaScript, в соответствии с диаграммой классов, представленной в приложении Б, были разработаны объекты...
-
Реализация, Composer - Программа расчета агрегатов по накапливающимся данным для построения отчетов
Для эффективного тестирования и демонстрации библиотеки было решено разработать PHP-приложение, состоящее из: 1. Менеджера зависимостей composer; 2....
-
Приложение, которое необходимо разработать, должно производить геометрическую реконструкцию сцены и вычисление цвета вершин модели. Для геометрической...
-
Программу обработки данных можно запускать как до, так и после включения устройства сопряжения. Перед первым использованием, а также после изменения...
-
Полученное по вышеприведенным формулам значение угла сравнивается с заданными величинами запуска и остановки. Программа обеспечивает запуск сканирования...
-
Работа программы представлена на рисунке 2.3 Рис. 2.3 Кодирование и тестирование программы Программа кодировалась на языке Си++, используя библотеку Qt5x...
-
Можно выделить три основных метода разработки программного обеспечения: 1. Конструкторы программ (Аlgoritm2, Devel Studio, MnCreator, Game Maker и др.)....
-
Выбор программ и алгоритмы реализации базы данных - База данных "Кинотеатр"
Microsoft Office Access - мощное приложение Windows. При этом производительность СУБД органично сочетаются со всеми удобствами и преимуществами Windows....
-
Базовые компоненты Delphi. - Разработка Windows-приложений в среде Borland Delphi
Цель работы: Получить навыки использования в программе базовых компонентов Delphi. Пояснения к работе В форме практически любого приложения есть...
-
Постановка задачи на разработку программного обеспечения Для того чтобы предлагаемая схема была интегрирована в САПР, который не имеет функции интеграции...
-
Для того, чтобы строить диаграммы в соответствии с рисунком 2.7, необходимо реализовать алгоритм соединения двух объектов линией. Для отображения линии...
-
Предлагаемая библиотека хранит все данные в отдельных таблицах, таким образом он не обязан использовать ту же СУБД, что и основное приложение. В качестве...
-
Общее описание программного обеспечения, реализующего разработанный алгоритм Основной идеей дипломного проекта, является реализация алгоритма...
-
В этой главе представлено описание инструментов и методов, использованных при написании кода программы. Инструменты разработки серверной части Для...
-
Интерфейс Windows forms - Разработка визуального редактора
Windows Forms - интерфейс программирования приложений (API), отвечающий за графический интерфейс пользователя и являющийся частью Microsoft. NET...
-
Классы StatMetric содержат всю логику библиотеки и предоставляют интерфейс для обновления и получения значений агрегатов. Рисунок 4. Диаграмма классов...
-
Подход NoSQL - Технологии больших данных: анализ и выбор решения для реализации проекта
Понятие NoSQL означает "Не только SQL" или "Не SQL". Термин получил известность, начиная с 2009 год, когда развитие интернет-технологий и социальных...
-
Рассмотрим особенности программирования под Android. Класс Activity - самый важный класс, из которого строится приложение Android. Этот класс...
-
Форматы файлов для хранения растровых графических изображений - Обзор графических редакторов
Как правило, файлы для хранения растровых графических изображений логически состоят из двух частей: заголовка и области данных. В заголовке указаны...
-
Установка и настройка маршрутизатора - Разработка локальной сети для ОАО "Корпорация Монстров"
Сетевой мост, бридж -- сетевое устройство второго уровня модели OSI, предназначенное для объединения сегментов (подсети) компьютерной сети в единую сеть....
-
Проектирование модели - Разработка программного приложения "Калькулятор коммунальных услуг"
При проектировании информационных систем предметная область отображается моделями данных нескольких уровней. Число используемых уровней зависит от...
-
Для написания АИС использовались следующие языки программирования, программные средства и библиотеки: - Язык программирования PHP 5.4; -...
-
Описание программы, Техническое описание программы - Разработка игры "Морской бой"
Запуск программы осуществляется следующим образом: необходимо открыть папку, содержащую данную игру, и найти исполняемый файл Battleship. exe . После...
Архитектура и компоненты - Разработка программы для реализации редактора временных графов синхронизации