ЛУКАСЗ Макуч
Для программирования на основе автоматов на основе программы с состояниями и переходами. Штаты соответствуют различным поведению. Переходы называются в честь событий и описывают, как эти поведения меняются.
Самый простой способ подумать об этом – это направленный график. Вот пример проклятого принца:
Это может быть либо Принц или Лягушка Отказ Принц Еда пиццы – это событие, которое вызывает переход от Принц Состояние в Лягушка штат.
Я собираюсь показать вам, как сделать (визуальные) программирование на основе автоматов в Росмаро.
Росмаро Является ли библиотека JavaScript, которая позволяет строить объекты состояния.
Объект является состоянием, когда два идентичных вызова метода могут производить разные результаты.
Вот пример:
> model.introduceYourself(); 'I am The Prince of Rosmaro!'
> model.eat({dish: 'yakisoba'}); undefined> model.introduceYourself();'I am The Prince of Rosmaro!'
> model.eat({dish: 'pizza'});undefined> model.introduceYourself();'Ribbit! Ribbit!'
Еще одним отличным примером гостевых объектов является графический пользовательский интерфейс. Подумайте о банкомате. Вы можете выглядеть дважды на экране и увидеть разные сообщения и поля. Ваши глаза одинаковы. Как вы смотрите на экран, не изменился. Это состояние банкомата, которое изменилось. Может быть, вы выбрали некоторый вариант, нажав кнопку, или, возможно, какой-то таймер. Что-то вызвало переход от одного состояния в другое.
Ниже приведены несколько примеров предельных приложений, построенных с использованием программирования на основе визуальных автоматов.
Росмаро Способ строительства государственных объектов – Объедините нарисованный график с помощью некоторого письменного кода Отказ
График показывает все возможное поведение и то, что делает их изменениями. Тот факт, что это нарисовано с помощью визуального редактора, делает его визуальным инструментом программирования.
Каждое поведение выражено как куча чистых функций. Функция может вернуть некоторое результат, а также запрос на следующую стрелку.
Росмаро хранит все состояние модели в смену хранения механизма. Это может быть все из простого объекта JavaScript к базе данных NoSQL. Он также использует пессимистичный замок, чтобы предотвратить попадание в непоследовательное состояние.
Пример, который я хочу показать, что вы относитесь к принцу, который превращается в лягушку, когда он ест пиццу.
Во-первых, откройте Редактор Росмаро Отказ Затем нажмите Нагрузка кнопка, чтобы начать новый проект.
Добавьте главный график.
Нажмите Новый узел Отказ
Добавить локальный узел под названием Принц Отказ
Затем добавьте локальный узел под названием Лягушка Отказ
Положите курсор мыши на Начать Точка входа и нарисуйте стрелку к Принц узел. Затем нарисуйте стрелку из Принц к Лягушка и назовите это ел пиццу . Наконец, нажмите Добавить узел Отказ
Добавить лист под названием Принц Отказ
Затем добавьте лист под названием Лягушка Отказ
Для завершения основного графика связать локальные узлы с недавно добавленными листьями.
График готов. Нажмите кнопку под названием Генерировать код Отказ
Пришло время написать немного JavaScript. Во-первых, вам нужно получить все зависимости.
npm i rosmaro rosmaro-in-memory-storage rosmaro-process-wide-lock --save
Затем вам нужно импортировать и позвонить им.
Сгенерированный график может быть либо импортирован как файл json, либо вставляется непосредственно в код. Чтобы сохранить этот пример максимально простым, я предлагаю вставлять его в код.
Лягушка, безусловно, более простое существо, чем принц. Реализация его поведения легко. Каждый раз, когда мы просим лягушку представиться, он говорит «RIBBIT! Ribbit! »
Принц не только вводит себя, но также обращает внимание на то, что он ест. Он может есть якисоба, и все в порядке. Но как только он ест пиццу, он следует за стрелой под названием ел пиццу Отказ
Пришло время поставить обработчики все вместе.
Модель готова. Вот полный код:
Одинаковые вызовы на ввести себя Метод вернуть разные значения. Возвращенное значение зависит от событий, которые произошли в прошлом. Это доказывает, что модель Объект является состоянием.
Код проклятого принца находится на Github. Это использует только базовые функции Rosmaro. При работе над реальными приложениями вы захотите использовать более передовые методы. Некоторые из них включают подграфы, динамические ортогональные области и объект контекста.
Вы можете узнать больше о Росмаро из его Официальная документация Отказ
Оригинал: “https://www.freecodecamp.org/news/an-introduction-to-visual-automata-based-programming-in-rosmaro-100dae8eb969/”