21. Mais um motivo:
• Na verdade, provavelmente você já usou!
• Todas as vezes que seu código tem um
número limitado de possíveis estados
("finite state") e alterna de estado quando
algum input/evento acontece ("machine"),
você escreveu um Finite State Machine!
24. • Pra quem nunca ouviu falar, é
difícil pensar em situações onde
você utilizaria um FSM, mas
após começar a usar você
percebe como State Machine é
conceito bastante simples e
como facilita imensamente a
criação de aplicações
sofisticadas.
25.
26. “...One of the most fascinating things about FSMs is that
the very same design techniques can be used for designing
Visual Basic programs, logic circuits or firmware for a
microcontroller. Many computers and microprocessor
chips have, at their hearts, a FSM.”
David Gibson
SPLat Controls Pty Ltd.
33. Exemplo: Player de Vídeo (sem FSM)
• Quando o buffer estiver completo:
• Toque
• Exiba o botão de pause
• Quando clicar no botão “play”:
• Se estava pausado:
• Toque do mesmo ponto em diante
• Se não:
• Toque desde o início
• Etc...
35. Agora eu ví vantagem!
• Separa a lógica da sua aplicação
do tratamento de eventos:
36. Agora eu ví vantagem!
• Separa a lógica da sua aplicação
do tratamento de eventos:
• Crie os estados e coloque a
lógica neles
37. Agora eu ví vantagem!
• Separa a lógica da sua aplicação
do tratamento de eventos:
• Crie os estados e coloque a
lógica neles
• Os eventos apenas trocam os
estados
39. Estados
• Um dos aspectos mais
importantes ao criar um FSM é
definir os estados.
40. Estados
• Um dos aspectos mais
importantes ao criar um FSM é
definir os estados.
• Defina tantos estados quanto
forem necessários para cobrir
todas as possibilidades.
41. • Além de definir os possíveis estados, é
importante definir o estado inicial.
42. • Além de definir os possíveis estados, é
importante definir o estado inicial.
43. • Estados tem regras definidas para transições -
quais estados são acessíveis por quais outros
estados?
44. • Estados tem regras definidas para transições -
quais estados são acessíveis por quais outros
estados?
51. AS3 State Machine
(http://github.com/cassiozen/AS3-State-Machine)
• State Engine Hierárquico
52. AS3 State Machine
(http://github.com/cassiozen/AS3-State-Machine)
• State Engine Hierárquico
• Setup rápido
53. AS3 State Machine
(http://github.com/cassiozen/AS3-State-Machine)
• State Engine Hierárquico
• Setup rápido
• Flexível
Notas do Editor
Uma técnica de programação. (Design Pattern)
Você pode ter, digamos, dois estados: "estou em casa" e "estou no trabalho", e duas regras: "ir pra casa" e "ir pro trabalho"
Em OOP, um objeto poderia ter diferentes estados, como por exemplo: "ativo" e "inativo", e regras como "ativar" e "desativar"
Enquanto OOP se preocupa com os substantivos e verbos de uma aplicação, state machines lidam com o momento
Enquanto OOP se preocupa com os substantivos e verbos de uma aplicação, state machines lidam com o momento
Enquanto OOP se preocupa com os substantivos e verbos de uma aplicação, state machines lidam com o momento
Enquanto OOP se preocupa com os substantivos e verbos de uma aplicação, state machines lidam com o momento
Enquanto OOP se preocupa com os substantivos e verbos de uma aplicação, state machines lidam com o momento
A razão pela qual vale a pena estudar mais sobre State Machines é que eles são úteis para resolver muitos problemas: String Matching, controle de Workflow, AI em games e simulações, etc.
A razão pela qual vale a pena estudar mais sobre State Machines é que eles são úteis para resolver muitos problemas: String Matching, controle de Workflow, AI em games e simulações, etc.
Boa parte do trabalho de se usar um State Machine está em identificar os estados com o nível de aprofundamento necessário no caso da sua aplicação. Defina os estados de modo a cobrir todas as possibilidades.
Boa parte do trabalho de se usar um State Machine está em identificar os estados com o nível de aprofundamento necessário no caso da sua aplicação. Defina os estados de modo a cobrir todas as possibilidades.