|
State machine, Приведите примеры реализации |
|
|
|
Feb 2 2005, 12:29
|
Группа: Новичок
Сообщений: 10
Регистрация: 6-07-04
Пользователь №: 265

|
Где можно почитать по теме/посмотреть примеры на С, асме
|
|
|
|
|
 |
Ответов
|
Mar 17 2009, 20:14
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 1-08-06
Пользователь №: 19 250

|
Еще один интересный вариант реализации машины состояния на плюсах, использовали в одном проекте.
Каждое состояние представляется отдельным классом, унаследованным от базового. Все обработчики событий заданы в базовом классе как виртуальные функции: virtual void eventButtonPressed() = 0 ; virtual void eventTimerExpired() = 0 ;
Определяются конкретные обработчики уже в производных классах (состояниях). Также существует указатель, указывающий на текущее состояние (экземпляр класса). По приходу события просто вызывается нужная функция-член из класса по указателю.
Преимущества:
Базовый класс не обязательно должен быть абстрактным. Некоторые обработчики можно сразу определить в нем и получить реакцию на событие по умолчанию. Как пример, обработчик тика системного таймера, на который надо реагировать одинаково во всех состояниях.
Можно сделать более сложную иерархию классов. Унаследовать класс от базового, определить в нем обработчик (напр. eventPacketReceived). От этого класса наследовать еще несколько подсостояний, но там этот обработчик не определять. В итоге подстостояния унаследуют реакцию на eventPacketReceived от своего суперкласса. Получается простая реализация иерархической машины состояний.
Можно инкапсулировать в класс данные, нужные только для конкретного состояния - например, счетчик принятых пакетов.
Вменяемый плюсовый компилятор делает очень хороший код с оптимизацией - на такие задачи он и рассчитан, вообщем-то.
Хорошие IDE умеют показывать иерархию классов, что приятно для визуализации во время кодирования.
Недостатки:
Много писанины, много однострочных функций. Наглядности без визуализации IDE никакой.
Требуется еще одна таблица или switch для выбора метода по приходу события.
Компилятор может оказаться невменяемым :-)
|
|
|
|
Сообщений в этой теме
sat State machine Feb 2 2005, 12:29 bialix Сайты:
http://is.ifmo.ru
http://softcraft.ru - раз... Feb 2 2005, 12:41 -Tумблер- Цитата(sat @ Feb 2 2005, 15:29)...посмотреть ... Feb 3 2005, 12:02 ALys 1. IAR VisualSTATE - в пакете примеры (под разные ... Feb 3 2005, 15:52 ig_z Цитата(ALys @ Feb 3 2005, 18:52)2. TS Control... Feb 4 2005, 12:44  sat Что то не ставится на ХР. Или это аддон к чему - ... Feb 7 2005, 11:50   maegg Может коротенько объясните, зачем это нужно и в ка... Feb 7 2005, 13:17    vet Цитата(maegg @ Feb 7 2005, 16:17)Может короте... Feb 7 2005, 19:54  ALys Что то не ставится на ХР. Или это аддон к чему - ... Feb 8 2005, 13:07 basileus SWITCH MACRO
local MYP
CLR ZH
ADZ (MYP>>1)... Feb 17 2005, 12:50 Tran Уважаемые, подскажите, пожалуйста, среды разработк... Sep 9 2005, 09:30 BVU Можно почитать теорию графов, там заложен базовый ... Sep 9 2005, 11:20 Sergu Вот хорошие объяснения с примерами есть:
State-O... Sep 12 2005, 03:27 TMX Код/**********************************************... Sep 12 2005, 10:29  Tran Этот код Вы наверняка писали руками. А есть ли про... Sep 12 2005, 11:14   TMX Цитата(Tran @ Sep 12 2005, 14:14)Этот код Вы ... Sep 15 2005, 16:34 lolikandr Если интересует интересный инструмент, то посмотри... Sep 13 2005, 09:35 Владимир_2010 Применение теории конечных автоматов к программиро... Mar 4 2009, 12:54 TMX Цитата(Владимир_2010 @ Mar 4 2009, 16:54)... Mar 4 2009, 17:31 Diz Рекомендую ознакомиться с реализацией иерархически... Mar 4 2009, 17:33 _Pasha Цитата(Diz @ Mar 4 2009, 20:33) Рекоменду... Mar 4 2009, 18:20  Alex B._ Цитата(_Pasha @ Mar 4 2009, 21:20) УПС. Т... Mar 4 2009, 21:41 Владимир_2010 Diz спасибо за ссылку на книги. В сети также есть ... Mar 5 2009, 06:54 TMX Цитата(Владимир_2010 @ Mar 5 2009, 10:54)... Mar 5 2009, 14:29 TMX Цитата(Владимир_2010 @ Mar 5 2009, 10:54)... Mar 5 2009, 15:17  _Pasha Цитата(TMX @ Mar 5 2009, 18:17) недостатк... Mar 5 2009, 15:38   TMX Цитата(_Pasha @ Mar 5 2009, 18:38) Позвол... Mar 5 2009, 17:09    Diz Цитата(TMX @ Mar 5 2009, 20:09) не слышал... Mar 5 2009, 17:31    _Pasha Цитата(TMX @ Mar 5 2009, 20:09) там Marti... Mar 5 2009, 17:50     TMX Цитата(_Pasha @ Mar 5 2009, 20:50) no com... Mar 6 2009, 07:35      _Pasha Цитата(TMX @ Mar 6 2009, 10:35) если еще ... Mar 6 2009, 13:42      TMX Недостатки прямого присваивания значения переменно... Mar 10 2009, 13:42 _Pasha А что-нибудь есть в ту же тему, но с текстовым вво... Mar 5 2009, 14:35 Diz Что касается визуализации, то я имел в виду следую... Mar 5 2009, 16:55 Diz Наверное, jumptable может быть полезен для сохране... Mar 6 2009, 13:20 TMX Цитата(Diz @ Mar 6 2009, 16:20) Наверное,... Mar 6 2009, 14:35  Dog Pawlowa Цитата(TMX @ Mar 6 2009, 18:35) сомнитель... Mar 10 2009, 16:14   TMX Цитата(Dog Pawlowa @ Mar 10 2009, 19:14) ... Mar 10 2009, 16:57    Dog Pawlowa Цитата(TMX @ Mar 10 2009, 20:57) с первым... Mar 10 2009, 17:36  Diz Цитата(TMX @ Mar 6 2009, 17:35) сомнитель... Mar 11 2009, 08:24   TMX Цитата(Diz @ Mar 11 2009, 11:24) Пример в... Mar 11 2009, 09:06    Dog Pawlowa Цитата(TMX @ Mar 11 2009, 12:06) то есть,... Mar 11 2009, 10:12     TMX Цитата(Dog Pawlowa @ Mar 11 2009, 13:12) ... Mar 11 2009, 13:22      _Pasha Цитата(TMX @ Mar 11 2009, 17:22) Тестиров... Mar 11 2009, 13:45      Dog Pawlowa Цитата(TMX @ Mar 11 2009, 17:22) А вот на... Mar 11 2009, 13:46       TMX Цитата(Dog Pawlowa @ Mar 11 2009, 16:46) ... Mar 12 2009, 12:14        Dog Pawlowa Цитата(TMX @ Mar 12 2009, 15:14) К пример... Mar 13 2009, 09:21         TMX Цитата(Dog Pawlowa @ Mar 13 2009, 12:21) ... Mar 13 2009, 10:07          Dog Pawlowa Цитата(TMX @ Mar 13 2009, 14:07) Просто м... Mar 13 2009, 14:59           _Pasha Цитата(Dog Pawlowa @ Mar 13 2009, 17:59) ... Mar 13 2009, 15:21           TMX Цитата(Dog Pawlowa @ Mar 13 2009, 17:59) ... Mar 13 2009, 16:08            _Pasha Цитата(TMX @ Mar 13 2009, 19:08) Если авт... Mar 13 2009, 16:23             TMX это я показал round-robin с постоянным приоритетом... Mar 13 2009, 16:55              _Pasha Цитата(TMX @ Mar 13 2009, 20:55) Вопрос в... Mar 13 2009, 17:14 -=TRO=- Внутри программируемой логики собирают микропроцес... Mar 10 2009, 16:47 _Pasha Весь смех в том, что сишная или иная ЯВУ-программа... Mar 10 2009, 18:17 Rst7 Цитатапри помощи переменной state эмулирует счетчи... Mar 10 2009, 19:15 ReAl Цитата(Rst7 @ Mar 10 2009, 21:15) Я давно... Mar 10 2009, 19:51  Dog Pawlowa Цитата(ReAl @ Mar 10 2009, 22:51) Тада, и... Mar 11 2009, 07:18   ReAl Цитата(Dog Pawlowa @ Mar 11 2009, 09:18) ... Mar 13 2009, 21:30 _Pasha Цитата(Diz @ Mar 11 2009, 11:24) Индекс -... Mar 11 2009, 11:40 Diz Интересно, а как сделать с набором параллельно раб... Mar 14 2009, 09:13 Dog Pawlowa Цитата(Diz @ Mar 14 2009, 13:13) Интересн... Mar 14 2009, 13:07 singlskv Цитата(Diz @ Mar 14 2009, 12:13) Интересн... Mar 14 2009, 22:23  Diz Цитата(singlskv @ Mar 15 2009, 01:23) Раз... Mar 15 2009, 09:26   _Pasha Цитата(Diz @ Mar 15 2009, 13:26) Вообщем,... Mar 16 2009, 06:17   singlskv Цитата(Diz @ Mar 15 2009, 12:26) Вообщем,... Mar 19 2009, 20:12 defunct Цитата(Diz @ Mar 14 2009, 11:13) Интересн... Mar 22 2009, 04:53  Dog Pawlowa Цитата(defunct @ Mar 22 2009, 07:53) Раск... Mar 23 2009, 09:57   _Pasha Цитата(Dog Pawlowa @ Mar 23 2009, 13:57) ... Mar 23 2009, 11:23    Dog Pawlowa Не нашел, чтобы эта ссылка была упомянута в теме.
... Mar 24 2009, 11:52 Diz Цитата(singlskv @ Mar 19 2009, 23:12) Как... Mar 19 2009, 21:32 Dog Pawlowa Цитата(Diz @ Mar 20 2009, 00:32) Ну, это ... Mar 20 2009, 09:05  singlskv Цитата(Dog Pawlowa @ Mar 20 2009, 12:05) ... Mar 20 2009, 20:10
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|