Pergunta

Estou pensando em implementar um programa com autômato finito em um idioma OOP como Java ou C ++.

O que você acha que é a melhor maneira de implementar isso com uma quantidade gerenciável de estados disponíveis, em relação ao bom design de software?

É bom implementar para cada estado uma classe própria? Se sim, como fazer a ponte entre dois estados?

Obrigado por qualquer comentário!

Foi útil?

Solução

Isso é apenas para flexionar seu músculo de programação, ou para um projeto real etc.? Em ambos os casos, depende do que você deseja a máquina de estado: - é gerenciar tarefas em algum tipo de fluxo de trabalho - é para determinar o estado do fluxo de aplicativos - é para um mecanismo de regras de negócios etc.

No caso de um projeto, sugiro que, dependendo do seu uso do alvo, você procure bibliotecas nesse domínio. Java, por exemplo, tem muitas bibliotecas para fluxos de fluxo de trabalho/ônibus, bem como toneladas de motores de regras (baba vem à mente do direito do bastão, embora seja um gigante complexo)

Outras dicas

Tente isso - a seção sobre design é boa e mostra um uso para um FSMhttp://www.ibm.com/developerworks/library/wa-finitemach1/

Outro uso que eu vi é implementar objetos gerenciados para um serviço de computador, com a transição "Start" movendo o objeto do "para baixo" para o estado "inicial" etc. usando uma extensão do Ciclo de Vida do Objeto Gerenciado OMG

o DK.BRICS.AUTOMATON A biblioteca é uma boa implementação dos FSAs em Java. É construído com o desempenho em mente, por isso negocia alguns princípios de OOP por velocidade, mas eu recomendo que você dê uma olhada nele.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top