DroidScript

Имитация класса в App Inventor

© 2016-2018 Автор материалов - Александр Страшко admin@starport.ru
DroidScript
инструменты для мобильной разработки

Имитация класса в App Inventor

© 2016-2018 Автор материалов - Александр Страшко admin@starport.ru
App Inventor  
Дата изменения 30.05.2017

За основу можно взять один из вариантов работы с объектами в JavaScript, при котором  вся функциональность заключена внутри одной процедуры, что позволяет скрыть часть переменных от внешнего доступа. App Inventor не позволяет создавать вложенные процедуры, но их можно заменить условным оператором.

В качестве объекта мы будем использовать набор пар ключ-значение, с которыми удобно работать при помощи компонента TinyDB. Для реализации возможности работы со многими объектами в параметре tag этого компонента нужно указывать имя объекта вместе со свойством, например:

myObject.width

Формат данных для выполнения разных операций может быть таким:

В качестве разделителя полей желательно выбрать символ, который не будет встречаться в их названиях и значениях.

Процедура для работы с объектами показана на рис. 1.

Процедура для работы с объектами

Рис. 1. Процедура для работы с объектами.

Вначале процедуры производится разбор полученного аргумента на параметры action, tag и value, а после при помощи условного оператора if переход к выполнению нужной операции. Локальные переменные определены в начале процедуры и видны во всех блоках операций. В данном примере это допустимо, так как операции работают с одним набором аргументов. Если для выполнения операций требуются разные аргументы, то в таком случае локальные переменные нужно определять в начале каждого блока операции для ограничения их области видимости этим блоком.

Созданную процедуру можно рассматривать как класс для работы с объектами в строковом виде и использовать для работы с ассоциативными массивами, небольшими базами данных и др.

Рассмотрим преимущества и недостатки данного шаблона проектирования в MIT App Inventor 2.

Преимущества:

Недостатки:

Если  нужно в одной операции использовать результаты работы другой операции, то для этого используется рекурсия - вызов процедуры из самой себя.

App Inventor