Diagrama de Máquina de Estado - apontes77/projetoApp_CMP1118 GitHub Wiki

Diagrama de Máquina de Estado

O diagrama de máquina de estados demonstra o comportamento de um elemento por meio de um conjunto finito de transições de estado, ou seja, uma máquina de estados. Além de poder ser utilizado para expressar o comportamento de uma parte do sistema, quando é chamado de máquina de estado comportamental também pode ser usado para expressar o protocolo de uso de parte de um sistema, quando identifica uma máquina de estado de protocolo.

Uma máquina de estados comportamental pode ser usada para especificar o comportamental de vários elementos do modelo. O elemento modelado muitas vezes é uma instância de uma classe. No entanto, pode-se usar esse diagrama para modelar o comportamento de um caso de uso, por exemplo.

Estado

Um estado representa a situação em que um elemento (muitas vezes um objeto) se encontra em determinado momento durante o período em que participa de um processo. Um objeto pode passar por diversos estados dentro de um mesmo processo. Um estado pode demonstrar:

  • A espera pela ocorrência de um evento;
  • A reação a um estímulo;
  • A execução de alguma atividade;
  • A satisfação de alguma condição.

Transições

Uma transição representa um evento que causa uma mudança no estado de um objeto, gerando um novo estado. Uma transição é representada por uma linha ligando dois estados, contendo uma seta em uma de suas extremidades, apontando para o novo estado gerado.

Estado Inicial

O estado inicial tem como função somente determinar o início da modelagem dos estados de um elemento. É representado por um círculo preenchido, a partir do qual é gerada uma transição que determina o início do processo. Da mesma forma que nas transições entre os objetos, uma transição de um estado inicial pode conter ou não descrição, o que às vezes é útil para identificar o evento que iniciou o processo.

Estado Final

O estado final tem como função apenas indicar o final dos estados modelados. É representado por um círculo não-preenchido envolvendo um segundo círculo preenchido.

Atividades internas

Referentes a atividades que um objeto pode executar quando encontra-se em um estado, as atividades internas podem ser detalhadas por meio das seguintes cláusulas:

  • Entry- identifica uma atividade que é executada quando o objeto assume (entra em) um estado. Sempre que um estado é assumido, ele executa o comportamento identificado por essa cláusula antes de qualquer outra ação.

  • Exit- identifica uma atividade que é executada quando o objeto sai de um estado. Sempre que se vai sair de um estado, o comportamento identificado por essa claúsula é executado antes o estado ser abandonado.

  • Do- identifica uma atividade realizada durante o tempo em que o objeto se encontra em um estado. Atividades internas do tipo Do também são chamadas de atividades de estado.

Transições internas

Transições internas são aquelas que não produzem modificações no estado de um objeto.

Autotransições

Autotransições apresentam pequenas diferenças em relação às transições internas. As transições internas ocorrem durante um estado do objeto, sem modificá-lo, enquanto as autotransições saem do estado atual do objeto, podendo executar alguma ação quando dessa saída e retornam ao mesmo estado. Uma autotransição é representada por uma seta de transição que parte do objeto e retorna ao próprio objeto.

Pseudoestado de Escolha

O pseudoestado de escolha representa um ponto na transição de estado s de um objeto em que deve ser tomada uma decisão, a partir da qual um determinado estado será ou não gerado, normalmente em detrimento de diversos outros possíveis estados.

Assim, um pseudoestado de escolha representa uma decisão, apoiada por condições de guarda, em que se decidirá qual o próximo estado do objeto a ser gerado. Um pseudoestado de escolha pode ser representado por um losango ou por um círculo vazio de onde partem duas ou mais transições.

Barra de Bifurcação/União

É utilizada quando da ocorrência de estados paralelos, causados por transições concorrentes. Sua função é determinar o momento em que o processo passou a ser executado em paralelo e em quantos subprocessos se dividiu (evento conhecido como bifurcação) ou determinar o momento em que dois ou mais subprocessos se uniram em um único processo (evento conhecido como união). Pode ser representada tanto por uma barra horizontal quanto uma vertical.