Based on the foregoing, architectural considerations let's form the static class diagram of the VCA, given the separation of the conceptual part (engine) and the part of self-realization of the VCA (Figure 4.10.1). Table 4.10 describes the classes of the class diagram.
Table 4.10. VCA classes
Class | Responsibility | Links |
TSecurity | Provides the information about the users, and also implements their authentication in the OpenSCADA system. | It is used by the widgets and frames of the VCA to verify the access rights. |
TFunction | Is used to access the mechanism of user programming when describing the logic of derived widgets, as well as to include the API functions of the object model into the derived widgets. | Keeps the structure if parameters with the logic in the derived widgets. Passed to the module, which provides the user programming language implementation in order to connect the mechanism of processing the program's logic. |
TUI | The root object of the module of subsystem "User interfaces" which is used for integration into the kernel of the OpenSCADA system. | Is inherited by the root objects of the module of the VCA concept and by modules of implementation of the VCA interface. |
VCA::Engine | The root object of the module of the VCA concept/engine. It contains the containers of objects of the engine, as well as general methods and data. | It is used by the visualization interfaces to access the data of the projects' sessions and concepts in general. Integrates the concepts' f code of the VCA in the OpenSCADA system. |
VCA::WidgetLib | Object of the library of widgets/frames, contains the objects of library widgets (VCA::LWidget). The library of widgets structure can be freely formed by the user. | Contains the objects of library widgets (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) и предоставляют графический интерфейс для управления ею. В соответствии со структурой концепции содержат множество специализированных объектов управления. |
Статическая диаграмма классов (рис.4.10.1) не раскрывает всей иерархии взаимодействия объектов, основанных на абстрактном объекте VCA::Widget. Это связано с неявным наследованием данных свойств виджетов через все слои движка, а также тонкостями наследования, выстроенного путём использования данных одних виджетов в других. Для разъяснения этих особенностей изобразим исчерпывающую карту "использующего" наследования на рис 4.10.2.