г. Москва, Милютинский пер., д.8, стр.2 Тел.: 8 (495) 999-70-33 |
|
|
Время работы: пн.-пт. с 9:00-21:00 сб.-вс. с 11:00-17:00 |
|
|
Работа с иерархическими конечными автоматами осуществляется относительно просто, если процесс моделирования достаточно хорошо определен. В предыдущих разделах фактически была описана наиболее широко применяемая семантика взаимодействия. Но эти подходы не всегда могут быть наиболее приемлемыми. В таких случаях приходится затрачивать дополнительное время для определения взаимодействий внутри иерархического конечного автомата, чтобы не сталкиваться в дальнейшем с неприятными сюрпризами.
Одним из удобных способов правильного выполнения этой работы является создание абстракции применительно к внутренней обработке в каждом состоянии. Именно этот подход используется при создании разнородных иерархических конечных автоматов. По существу, каждое состояние предоставляет функцию, позволяющую выполнить один шаг в процессе эксплуатации, которая должна через конечный промежуток времени возвратить управление. При этом может быть снова воспроизведена вся семантика, описанная в предыдущих разделах, но этот подход позволяет также вместо предложенных ранее методов нсгаялятъ алгоритмы обработки, определяемые пользователем, как описано ниже.
В подходе, основанном на использовании ведущего и ведомого конечных автоматов ит спб, вначале осуществляется шаг, связанный с переходом к ведущему конечному автомату, а затем происходит само моделирование (при этом в случае необходимости переопределяются переходы).
В подходе, основанном на использовании стека, просто осуществляются шаги, связанные с переходом к ведомому конечному автомату, до тех пор, пока не достигается порождающий конечный автомат, находящийся в фокусе (в верхней части стека). В подходе, в котором учитывается степень детализации, шаги, связанные с переходом к вложенному порождающему конечному автомату, осуществляются только в том случае, если коэффициент детализации имеет значение ниже порогового. Таким образом, задача создания абстрактного представления для всех этих видов обработки является несложной. Достаточно лишь определить базовый класс порождающего конечного автомата, предусмотрев при этом функцию осуществления указанного шага. Чтобы создать определяемую пользователем семантику иерархического конечного автомата, необходимо переопределить шаг, заданный по умолчанию, и провести с вложенными состояниями необходимые манипуляции.