crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Конечный автомат на Qt, (Qt State Machine Framework)
Litkevich Yuriy
  опции профиля:
сообщение 31.1.2009, 18:53
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Нашел в лаборатории у тролей Qt State Machine Framework
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
SABROG
  опции профиля:
сообщение 1.2.2009, 0:04
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Почитал в инете примеры со строками на эту тему тут, тут и тут, а так и не понял какое преимущество он дает.

Ну, а чем тогда конечный автомат лучше для QCheckBox по сравнению с этим кодом?

    Qt::CheckState state = checkBox1->checkState();
    if (checkBox1->isTristate())
    {
        checkBox1->setCheckState((state+1)%3); //чеким по-кругу 0,1,2,0,1,2...n
    }
    else
    {
        checkBox1->setCheckState(state^Qt::Checked); //xor'им 0 или 2 с 2 (Qt::Checked).
    }

Возможно и не работает, но идея должна быть понятна
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 2.2.2009, 15:25
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


Цитата(SABROG @ 1.2.2009, 3:04) *
Почитал в инете примеры со строками на эту тему тут, тут и тут, а так и не понял какое преимущество он дает.
Ну, а чем тогда конечный автомат лучше для QCheckBox по сравнению с этим кодом?
    Qt::CheckState state = checkBox1->checkState();
    if (checkBox1->isTristate())
    {
        checkBox1->setCheckState((state+1)%3); //чеким по-кругу 0,1,2,0,1,2...n
    }
    else
    {
        checkBox1->setCheckState(state^Qt::Checked); //xor'им 0 или 2 с 2 (Qt::Checked).
    }

Возможно и не работает, но идея должна быть понятна

Этот код - тот же конечный автомат только запрограммированный через if-ы.
Конечный автомат - это способ (математический формализм) для описаия поведения некоторой системы через состояния и переходы между ними.
Конечным автоматом можно описать поведения GUI программы, работу с устройством, сетевым протоколом, разбор текстового файла...
Те же регулярные выражения реализуются через конечные автоматы - строка регэкспа разбирается, по ней строится КА (конечный автомат), после чего через него пропускается поток символов - каждый символ - событие, переводящее КА в какое-то состояние. :)

Так что вопрос "что лучше" тут бессмысленен.
Если научится работать с КА и находить их в задачах, то будет проще работать. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Litkevich Yuriy   Конечный автомат на Qt   31.1.2009, 18:53
- - SABROG   Я не совсем понимаю предназначение. В качестве при...   31.1.2009, 21:13
- - Litkevich Yuriy   Цитата(SABROG @ 1.2.2009, 0:13) Так вот ч...   31.1.2009, 23:12
- - SABROG   Почитал в инете примеры со строками на эту тему ту...   1.2.2009, 0:04
|- - Tonal   Цитата(SABROG @ 1.2.2009, 3:04) Почитал в...   2.2.2009, 15:25
- - Litkevich Yuriy   Цитата(SABROG @ 1.2.2009, 3:04) Возможно ...   1.2.2009, 0:14
- - SABROG   Цитата(Litkevich Yuriy @ 1.2.2009, 0:14) ...   1.2.2009, 0:55
- - Antrix   Конечный автомат, это ориентированый граф, который...   1.2.2009, 16:23
|- - kwisp   Цитата(Antrix @ 1.2.2009, 16:23) У игры е...   1.2.2009, 17:11
- - Litkevich Yuriy   Цитата(kwisp @ 1.2.2009, 20:11) мне кажет...   1.2.2009, 17:19
|- - kwisp   Цитата(Litkevich Yuriy @ 1.2.2009, 17:19)...   1.2.2009, 17:28
- - Antrix   Возможно пример неудачен, ну я старался объснить к...   1.2.2009, 17:33
- - Litkevich Yuriy   вообще любой пример не удачен, если все состояния ...   1.2.2009, 18:04
- - kwisp   Litkevich Yuriy, Цитатавообще любой пример не уда...   1.2.2009, 18:11
- - Litkevich Yuriy   Цитата(kwisp @ 1.2.2009, 21:11) а пример ...   1.2.2009, 18:18
- - SABROG   Видимо if'ы обеспечивают как раз тот механизм ...   2.2.2009, 15:45
- - Litkevich Yuriy   вообще чаще используют переключатель: примерно так...   2.2.2009, 15:58
- - kuzulis   ООО!!! Хоть тема и старая, но подниму....   20.4.2010, 19:56
- - Анна   Вот сейчас читаю про паттерн "Состояние...   18.12.2017, 17:31
- - Litkevich Yuriy   Цитата(Анна @ 18.12.2017, 19:31) Но вот к...   10.1.2018, 22:33


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 12.12.2024, 12:31