Объектная машина – основа реализации объектного метода.
Объектная машина - основа реализации объектного метода, должна иметь инструменты поддержки неотъемлемых составляющих объекта: состояния, поведения и идентичности, а также инструменты реализации отношений между объектами: связей и агрегации [1]. В объектной машине FloraWare в качестве форматов данных выступают объекты, а алгоритм реализуется передачей сообщений между объектами и их реакцией на эти сообщения. Архитектурно объектная машина FloraWare может быть представлена в виде нескольких уровней.
На самом нижнем уровне реализован аппарат работы со свойствами объектов, которые относятся к четырем базовым типам: целое, действительное, строка и указатель на объект, эти свойства могут отличаться набором индексов базовых типов. Свойства объекта это инструмент поддержки его состояния.
Наличие объектов- контейнеров, способных содержать внутри себя другие объекты, позволяет строить сколь угодно сложные объекты. Обязательный объект - корневой контейнер, в который по мере необходимости добавляются другие объекты, реализует память объектной машины представляющую собой дерево, в котором находятся все объекты, существующие в данный момент времени. Добавление всем объектам выделенного строкового свойства Имя позволяет идентифицировать объекты и осуществлять навигацию по дереву объектов. Составное свойство Ссылка на объект, состоящее из относительного пути до объекта и указателя на объект, дает возможность организовывать сколь угодно сложные связи между объектами. Таким образом, древовидная структура данных является основой реализации отношения агрегация между объектами, а с помощью ссылок на объекты устанавливаются отношения типа связь.
Второй уровень объектной машины обеспечивает работу объектов встроенных базовых классов, которые освобождают пользователя от проектирования самих этих классов, в его обязанности входит только определение использования их экземпляров. Встроенные классы реализованы в ядре FloraWare как обычные классы, созданные с использованием объектно-ориентированного языка программирования [5], со своими свойствами и методами. Для FloraWare набор таких встроенных классов достаточно обширен, в него входят:
- универсальные объекты: число, целое, строка, указатель;
- объекты контейнеры: директория, массив, набор констант;
- графические объекты: фигура, альбом, окно, меню;
- программные объекты: программа, функция, задача;
- объекты управления: диалоговые элементы, редакторы;
- объекты работы с базами данных: база данных, таблица, курсор;
- объекты графического программирования;
- объекты автоматного программирования;
- объекты ввода-вывода: файл, порт, сетевой порт.
Согласно объектному методу для реализации алгоритма в целом необходимо, чтобы объекты обменивались друг с другом сообщениями. Инициаторами обмена сообщениями являются активные объекты, которые, кроме того, служат основой для параллелизма. Пути передачи сообщений определяются с помощью понятий источник изменений и приемник изменений. В источнике есть список приемников, подписавшихся на сообщения об изменениях, а в объекте приемнике есть свойство путь до источника, по которому на этапе установления связей происходит связывание источника и приемника. При изменении источника он информирует об этом приемник, цепочка может быть произвольной длины и разветвляться. Таким образом, формируется паутина, за нити которой «дергают» активные внешние источники и она передает события всем заинтересованным объектам. Причем все это делается без программирования, а только настройкой взаимосвязей, а сам обмен сообщениями достигается чтением и изменением значений свойств объектов. Использование связей между объектами для передачи изменений дает возможность реализовать модель систем с «мгновенным» взаимодействием объектов, для которого не важна последовательность действий.
Рисунок 4 - Паутина связей между объектами