Исходя из вышеизложенных, архитектурных, соображений сформируем статическую диаграмму классов СВУ, учитывая разделение на концептуальную часть (движок) и часть индивидуальной реализации СВУ (рис. 4.11.1). В таблице 4.11 представлено описание классов диаграммы классов.
Таблица 4.11. Классы СВУ
Класс | Ответственность | Связи |
TSecurity | Предоставляет информацию о пользователях, а также выполняет их аутентификацию в системе OpenSCADA. | Используется виджетами и кадрами СВУ для проверки прав на доступ к ним. |
TFunction | Используется для доступа к механизму пользовательского программирования при описании логики производных виджетов, а также для включения функций API объектной модели в производные виджеты. | Хранит структуру параметров обвязываемых логикой в производных виджетах. Передаётся модулю, предоставляющего реализацию языка пользовательского программирования, с целью подключения механизма обработки логики программы. |
TUI | Корневой объект модуля подсистемы "Пользовательские интерфейсы", используемый для интеграции в ядро системы OpenSCADA. | Наследуется корневыми объектами модуля концепции СВУ и модулями реализации интерфейса СВУ. |
VCA::Engine | Корневой объект модуля концепции/движка СВУ. Содержит контейнеры объектов движка, а также общие методы и данные. | Используется интерфейсами визуализации для доступа к данным сеансов проектов и концепции в целом. Интегрирует код концепции СВУ в систему OpenSCADA. |
VCA::WidgetLib | Объект библиотеки виджетов/кадров, содержит объекты библиотечных виджетов (VCA::LWidget). Состав библиотек виджетов может свободно формироваться пользователем. | Содержит объекты библиотечных виджетов (VCA::LWidget). |
VCA::Widget | Абстрактный объект виджета. | Наследуется объектами: библиотечного виджета (VCA::LWidget), контейнерного виджета (VCA::CWidget), кадра проекта (VCA::Win) и объектами сеанса исполнения проекта (VCA::SessWin, VCA::SessWdg). Виджет-контейнер содержит функцию связанную с реализацией языка пользовательского программирования. Использует объект "OpenSCADA API TSecurity" для управления правами доступа. Использует события из менеджера событий. Обращается к менеджеру тем для получения непосредственных значений цветов шрифтов в соответствии с текущей темой. |
VCA::LWidget | Объект библиотечного виджета/кадра. | Хранится в библиотеке (VCA::WidgetLib). Может содержать вложенные виджеты, в лице объектов контейнерных виджетов (VCA::CWidget). |
VCA::CWidget | Объект контейнерного виджета библиотечного виджета/кадра (VCA::LWidget). Фактически выполняет роль ссылки на библиотечный виджет. | Содержится в библиотечном кадре/виджете (VCA::LWidget). |
VCA::Project | Объект проекта пользовательского интерфейса. Содержит окна (VCA::Win) с иерархичным наименованием. | Содержится в контейнере объекта концепции (VCA::Engine). Содержит объекты окон (VCA::Win) проекта. |
VCA::Page | Объект страницы интерфейса ВУ. Тесно связан с кадром из библиотеки виджетов, собственно кадр и несёт в себе элементы интерфейса. Сам объект окна, в дополнении к кадру, разрешает ссылки на динамику и предоставляет механизм расслоения динамики кадра на страницы, с возможностью формирования шаблона динамики. | Содержится в контейнере проекта. Наследуется от абстрактного виджета (VCA::Widget). Связывается с кадром интерфейса (VCA::LWidget) в библиотеке виджетов. |
VCA::Theme | Объект темы интерфейса визуализации. Содержит элементы темы (VCA::ThemeEl) | Содержится в контейнере объекта концепции (VCA::ConcVCA). Хранит элементы темы (VCA::ThemeEl). |
VCA::ThemeEl | Объект элемента темы. Содержит ассоциацию имени элемента с кодом цвета и шрифта. | Содержится в контейнере темы (VCA::Theme). Используется объектом виджета (VCA::Widget) для получения значений цвета и шрифта по имени элемента темы. |
VCA::EventMap | Объект карты событий. Содержит объекты событий (VCA::Event). | Содержится в контейнере объекта концепции (VCA::ConcVCA). Хранит описания событий (VCA::Event). |
VCA::Event | Объект события, содержит ассоциацию имени объекта(события) с реальным событием. | Содержится в контейнере карты событий (VCA::EventMap). |
VCA::Session | Объект сессии исполнения проекта визуализации. Открывается модулем интерфейса визуализации и использует, в дальнейшем, данные сессии для визуализации своим методом. Все вычисления интерфейсов визуализации выполяются именно в сессии. | Содержится в проекте интерфейса визуализации. Содержит объекты окон сесии с данными исполнения. Используется модулями интерфейсов визуализации для отображения данных сессии. |
VCA::SessPage | Объект страницы сессии. Содержит динамические данные окна проекта над которыми выполняет требуемые вычисления. | Содержится в объекте сессии проекта (VCA::SessProj). Наследуется от абстрактного виджета (VCA::Widget). Использует объект страницы проекта (VCA::Page) как источник исходных параметров. |
VCA::SessWdg | Объект виджета сессии. Содержит динамические данные отдельного элемента кадра над которыми выполняет требуемые вычисления. Может вкладываться один в другой в соответствии с иерархией виджетов кадра. | Содержится в объекте окна сессии (VCA::SessPage) или в высшем по иерархии объекте этого типа. Наследуется от абстрактного виджета (VCA::Widget). Использует объект библиотечного (VCA::LWidget) и/или контейнерного (VCA::CWidget) виджета как источник исходных параметров. Используется модулем интерфейса визуализации в роли источника динамических данных для визуализации. |
Vision, WebGUI | Корневые объекты модуля интерфейса визуализации, построенные на основе библиотеки QT и Web-технологий. Предоставляют доступ к средствам исполнения и разработки интерфейсов визуализации в среде используемой технологии. | Предоставляют доступ к среде исполнения и разработки. Интегрируют код интерфейса визуализации в систему OpenSCADA. |
VRunTime, WebRunTime | Объекты среды исполнения интерфейса визуализации на основе библиотеки QT и Web-технологий. Непосредственно предоставляют пользовательский интерфейс визуализации и управления. | Содержаться в корневых объектах модулей визуализации. Подключаются и используют данные объекта сеанса проекта (VCA::SesProj) концепции СВУ. В соответствии со структурой сеанса содержат множество специализированных объектов непосредственного отображения. |
VDevelop, WebDevelop | Объекты среды разработки интерфейса визуализации на основе библиотеки QT и Web-технологий. Предоставляют интерфейс инструмента над данными концепции для разработки интерфейсов ВУ. | Содержаться в корневых объектах модулей визуализации. Подключаются к объекту корня концепции СВУ (VCA::Engine) и предоставляют графический интерфейс для управления ею. В соответствии со структурой концепции содержат множество специализированных объектов управления. |
Статическая диаграмма классов не раскрывает всей иерархии взаимодействия объектов, основанных на абстрактном объекте VCA::Widget. Это связано с неявным наследованием данных свойств виджетов через все слои движка, а также тонкостями наследования, выстроенного путём использования данных одних виджетов в других. Для разъяснения этих особенностей изображена исчерпывающая карта "использующего" наследования в разделе 4.5.