OOAD - Modelagem Dinâmica

O modelo dinâmico representa os aspectos dependentes do tempo de um sistema. Ele se preocupa com as mudanças temporais nos estados dos objetos em um sistema. Os principais conceitos são -

  • Estado, que é a situação em uma condição particular durante a vida útil de um objeto.

  • Transição, uma mudança de estado

  • Evento, uma ocorrência que desencadeia transições

  • Ação, uma computação ininterrupta e atômica que ocorre devido a algum evento, e

  • Simultaneidade de transições.

Uma máquina de estado modela o comportamento de um objeto à medida que ele passa por vários estados em seu tempo de vida devido a alguns eventos, bem como às ações que ocorrem devido aos eventos. Uma máquina de estado é representada graficamente por meio de um diagrama de transição de estado.

Estados e transições de estado

Estado

O estado é uma abstração dada pelos valores dos atributos que o objeto possui em um determinado período de tempo. É uma situação que ocorre por um período de tempo finito na vida de um objeto, no qual ele atende a certas condições, executa certas atividades ou espera que certos eventos ocorram. Em diagramas de transição de estado, um estado é representado por retângulos arredondados.

Partes de um estado

  • Name- Uma string diferencia um estado de outro. Um estado não pode ter nenhum nome.

  • Entry/Exit Actions - Denota as atividades realizadas na entrada e na saída do estado.

  • Internal Transitions - As mudanças dentro de um estado que não causam uma mudança no estado.

  • Sub–states - Estados dentro de Estados.

Estados iniciais e finais

O estado inicial padrão de um objeto é chamado de estado inicial. O estado final indica a conclusão da execução da máquina de estado. Os estados inicial e final são pseudo-estados e não podem ter as partes de um estado regular, exceto o nome. Em diagramas de transição de estado, o estado inicial é representado por um círculo preto preenchido. O estado final é representado por um círculo preto preenchido dentro de outro círculo preto não preenchido.

Transição

Uma transição denota uma mudança no estado de um objeto. Se um objeto estiver em um determinado estado quando um evento ocorrer, o objeto pode executar certas atividades sujeitas a condições especificadas e alterar o estado. Nesse caso, diz-se que ocorreu uma transição de estado. A transição fornece a relação entre o primeiro estado e o novo estado. Uma transição é representada graficamente por um arco sólido direcionado do estado de origem ao estado de destino.

As cinco partes de uma transição são -

  • Source State - O estado afetado pela transição.

  • Event Trigger - A ocorrência devido à qual um objeto no estado de origem passa por uma transição se a condição de guarda for satisfeita.

  • Guard Condition - Uma expressão booleana que, se True, causa uma transição ao receber o gatilho do evento.

  • Action - Um cálculo atômico ininterrupto que ocorre no objeto de origem devido a algum evento.

  • Target State - O estado de destino após a conclusão da transição.

Example

Suponha que uma pessoa esteja pegando um táxi do ponto X para o local Y. Os estados da pessoa podem ser: Esperando (esperando pelo táxi), Pedalando (ela pegou um táxi e está viajando nele) e Alcançado (ela alcançou o destino). A figura a seguir descreve a transição de estado.

Eventos

Os eventos são algumas ocorrências que podem desencadear a transição de estado de um objeto ou grupo de objetos. Os eventos têm uma localização no tempo e no espaço, mas não têm um período de tempo associado a eles. Os eventos geralmente estão associados a algumas ações.

Exemplos de eventos são clique do mouse, pressionamento de tecla, uma interrupção, estouro de pilha, etc.

Os eventos que disparam as transições são escritos ao lado do arco de transição nos diagramas de estado.

Example

Considerando o exemplo mostrado na figura acima, a transição do estado Esperando para o estado Pedalando ocorre quando a pessoa pega um táxi. Da mesma forma, o estado final é alcançado, quando ele chega ao destino. Essas duas ocorrências podem ser chamadas de eventos Get_Taxi e Reach_Destination. A figura a seguir mostra os eventos em uma máquina de estado.

Eventos Externos e Internos

Eventos externos são aqueles eventos que passam de um usuário do sistema para os objetos dentro do sistema. Por exemplo, clique do mouse ou pressionamento de tecla pelo usuário são eventos externos.

Eventos internos são aqueles que passam de um objeto para outro dentro de um sistema. Por exemplo, estouro de pilha, erro de divisão, etc.

Eventos Adiados

Os eventos adiados são aqueles que não são imediatamente tratados pelo objeto no estado atual, mas são alinhados em uma fila para que possam ser tratados pelo objeto em algum outro estado posteriormente.

Aulas de Eventos

A classe de eventos indica um grupo de eventos com estrutura e comportamento comuns. Assim como acontece com as classes de objetos, as classes de eventos também podem ser organizadas em uma estrutura hierárquica. As classes de eventos podem ter atributos associados a elas, sendo o tempo um atributo implícito. Por exemplo, podemos considerar os eventos de partida de um voo de uma companhia aérea, que podemos agrupar na seguinte classe -

Flight_Departs (Flight_No, From_City, To_City, Route)

Ações

Atividade

Atividade é uma operação sobre os estados de um objeto que requer algum período de tempo. Eles são as execuções em andamento dentro de um sistema que podem ser interrompidas. As atividades são mostradas em diagramas de atividades que retratam o fluxo de uma atividade para outra.

Açao

Uma ação é uma operação atômica executada como resultado de certos eventos. Por atômico, entende-se que as ações são ininterruptas, ou seja, se uma ação começar a ser executada, ela será concluída sem ser interrompida por nenhum evento. Uma ação pode operar em um objeto no qual um evento foi disparado ou em outros objetos que são visíveis para este objeto. Um conjunto de ações compreende uma atividade.

Ações de entrada e saída

A ação de entrada é a ação executada ao entrar em um estado, independentemente da transição que levou a ele.

Da mesma forma, a ação executada ao sair de um estado, independentemente da transição que o conduziu para fora, é chamada de ação de saída.

Cenário

O cenário é uma descrição de uma sequência específica de ações. Ele descreve o comportamento de objetos submetidos a uma série de ações específicas. Os cenários primários representam as sequências essenciais e os cenários secundários representam as sequências alternativas.

Diagramas para modelagem dinâmica

Existem dois diagramas principais que são usados ​​para modelagem dinâmica -

Diagramas de interação

Os diagramas de interação descrevem o comportamento dinâmico entre diferentes objetos. É composto por um conjunto de objetos, seus relacionamentos e a mensagem que os objetos enviam e recebem. Assim, uma interação modela o comportamento de um grupo de objetos inter-relacionados. Os dois tipos de diagramas de interação são -

  • Sequence Diagram - Representa a ordenação temporal das mensagens de forma tabular.

  • Collaboration Diagram - Representa a organização estrutural dos objetos que enviam e recebem mensagens por meio de vértices e arcos.

Diagrama de Transição de Estado

Os diagramas de transição de estado ou máquinas de estado descrevem o comportamento dinâmico de um único objeto. Ele ilustra as sequências de estados pelas quais um objeto passa em seu tempo de vida, as transições dos estados, os eventos e condições que causam a transição e as respostas devido aos eventos.

Simultaneidade de eventos

Em um sistema, podem existir dois tipos de simultaneidade. Eles são -

Simultaneidade do sistema

Aqui, a simultaneidade é modelada no nível do sistema. O sistema geral é modelado como a agregação de máquinas de estado, em que cada máquina de estado é executada simultaneamente com outras.

Simultaneidade dentro de um objeto

Aqui, um objeto pode emitir eventos simultâneos. Um objeto pode ter estados compostos de subestados e eventos simultâneos podem ocorrer em cada um dos subestados.

Os conceitos relacionados à simultaneidade dentro de um objeto são os seguintes -

Estados simples e compostos

Um estado simples não tem subestrutura. Um estado que possui estados mais simples aninhados dentro dele é chamado de estado composto. Um subestado é um estado aninhado dentro de outro estado. Geralmente é usado para reduzir a complexidade de uma máquina de estado. Os subestados podem ser aninhados em qualquer número de níveis.

Os estados compostos podem ter subestados sequenciais ou subestados simultâneos.

Subestados Sequenciais

Em subestados sequenciais, o controle de execução passa de um subestado para outro, um após o outro, de maneira sequencial. Há no máximo um estado inicial e um estado final nessas máquinas de estado.

A figura a seguir ilustra o conceito de subestados sequenciais.

Subestados simultâneos

Em subestados simultâneos, os subestados são executados em paralelo, ou em outras palavras, cada estado possui máquinas de estado em execução simultânea dentro dele. Cada uma das máquinas de estado tem seus próprios estados inicial e final. Se um subestado simultâneo atinge seu estado final antes do outro, o controle espera em seu estado final. Quando todas as máquinas de estado aninhadas alcançam seus estados finais, os subestados se unem de volta a um único fluxo.

A figura a seguir mostra o conceito de subestados simultâneos.