реклама на сайте
подробности

 
 
> State machine, Приведите примеры реализации
sat
сообщение Feb 2 2005, 12:29
Сообщение #1





Группа: Новичок
Сообщений: 10
Регистрация: 6-07-04
Пользователь №: 265



Где можно почитать по теме/посмотреть примеры на С, асме
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Diz
сообщение Mar 17 2009, 20:14
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 84
Регистрация: 1-08-06
Пользователь №: 19 250



Еще один интересный вариант реализации машины состояния на плюсах, использовали в одном проекте.

Каждое состояние представляется отдельным классом, унаследованным от базового. Все обработчики событий заданы в базовом классе как виртуальные функции:
virtual void eventButtonPressed() = 0 ;
virtual void eventTimerExpired() = 0 ;

Определяются конкретные обработчики уже в производных классах (состояниях). Также существует указатель, указывающий на текущее состояние (экземпляр класса). По приходу события просто вызывается нужная функция-член из класса по указателю.

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

Базовый класс не обязательно должен быть абстрактным. Некоторые обработчики можно сразу определить в нем и получить реакцию на событие по умолчанию. Как пример, обработчик тика системного таймера, на который надо реагировать одинаково во всех состояниях.

Можно сделать более сложную иерархию классов. Унаследовать класс от базового, определить в нем обработчик (напр. eventPacketReceived). От этого класса наследовать еще несколько подсостояний, но там этот обработчик не определять. В итоге подстостояния унаследуют реакцию на eventPacketReceived от своего суперкласса. Получается простая реализация иерархической машины состояний.

Можно инкапсулировать в класс данные, нужные только для конкретного состояния - например, счетчик принятых пакетов.

Вменяемый плюсовый компилятор делает очень хороший код с оптимизацией - на такие задачи он и рассчитан, вообщем-то.

Хорошие IDE умеют показывать иерархию классов, что приятно для визуализации во время кодирования.


Недостатки:

Много писанины, много однострочных функций. Наглядности без визуализации IDE никакой.

Требуется еще одна таблица или switch для выбора метода по приходу события.

Компилятор может оказаться невменяемым :-)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 11th August 2025 - 06:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01474 секунд с 7
ELECTRONIX ©2004-2016