É o diagrama mais antigo da UML:
Foi criado nos anos 60
Também conhecido como Diagrama de Estados ou Máquina de Estados (Statechart Machine)
É uma ferramenta útil para mostrar o ciclo de vida de um objeto.
Em um sistema real, somente algumas poucas classes demandam o uso de um DTE:
Classes críticas da aplicação;
Classes que se comportam de forma diferente em função de transições de estados;
Classes cujo comportamento atual (que você deseja compreender) depende do seu passado (estados anteriores).
Pode ser utilizado para a modelagem dos estados (ciclo de vida) de um objeto/classe ou do sistema como um todo - o sistema passa a ser o “objeto” de análise.
Possui uma sintaxe simplificada que precede a UML:
Caixas representando os estados;
Setas representando as transições.
Os estados são momentos no ciclo de vida de um objeto
O estado de um objeto é geralmente caracterizado pelos valores de um ou mais de seus atributos
SINTAXE:
Um estado é representado graficamente por uma caixa retangular com cantos arredondados
Um estado comum é composto por dois elementos: nome (obrigatório) e efeitos (opcional)
Estereótipos podem ser utilizados em estados assim como em quaisquer entidades UML.
No exemplo do DTE do Ciclo de Vida de Pessoa, os estados aparecem apenas com seu nome.
O nome de um estado geralmente representa o valor de um atributo do objeto representando pelo DTE. Por exemplo, um objeto da classe Pessoa pode ter um atributo chamado "fase da vida" com os possíveis valores: bebê, criança, adolescente, adulta, idosa.
Além dos estados comuns, em um DTE existem os estados especiais: Estado Inicial e Estado Final.
SINTAXE: É representado por um círculo fechado (⚫)
É o estado de origem do diagrama
Não aceita transições de entrada (🔲➡️⚫)
É obrigatório em um DTE
No exemplo do DTE do Ciclo de Vida de Pessoa, o estado inicial precede o primeiro estado "Bebê".
SINTAXE: É representado por um círculo fechado dentro de um círculo aberto (🔘)
É o estado de término do diagrama
Não aceita transições de saída (🔘➡️🔲)
É obrigatório em um DTE nos casos em que há um final para a abstração modelada
No exemplo do DTE do Ciclo de Vida de Pessoa, o estado final é posterior ao último estado "Idosa".
Efeitos também são conhecidos como Ações (Actions)
Existem três tipos de efeitos para estados:
Efeitos de entrada (entry): efeitos ativados ao alcançar o estado
Efeitos de execução (do): efeitos ativados durante todo o período do estado
Efeitos de saída (exit): efeitos ativados antes de deixar o estado
SINTAXE:
São escritos após uma barra "/"
Efeitos podem ser escritos em linguagem natural ou em uma linguagem descritiva estruturada na forma de operações/métodos, dependendo da etapa do projeto e/ou objetivo do diagrama.
É possível utilizar uma linguagem de programação OO específica como a Java ou linguagens como BNF e OCL.
As transições determinam a troca de estados em função de um determinado evento
Um evento pode ser um sinal (estímulo assíncrono), uma operação (estímulo síncrono) ou, simplesmente, a passagem de tempo
As transições podem ser de dois tipos com relação ao estado:
Transições de ENTRADA do estado: o estado é o destino da transição.
Transições de SAÍDA do estado: o estado é a origem da transição.
SINTAXE:
São representadas graficamente por setas orientadas que tem como origem e destino estados do diagrama.
Do ponto de vista do Estado “StandBy” do Exemplo de DTE de uma TV:
As transições de entrada são: cabo de energia conectado; tela desligada.
As transições de saída são: botão power pressionado; cabo de energia desconectado.
As transições de estados são compostas por três elementos opcionais: nome/gatilho (opcional, porém desejável), condição de guarda (opcional), efeito (opcional, podendo ser usando apenas quando há uma condição de guarda).
SINTAXE: Assim como os efeitos de estados, os elementos que compõem uma transição podem ser escritos em linguagem natural ou em linguagem descritiva na forma de operações/métodos, dependendo da etapa do projeto e/ou objetivo do diagrama.
O gatilho é o evento que dispara a transição. Um evento pode ser um sinal (estímulo assíncrono), uma operação (estímulo síncrono) ou, simplesmente, a passagem de tempo
No Exemplo de DTE de uma TV as transições aparecem somente com o nome
No Exemplo de DTE do Ciclo de Vida de Pessoa as transições aparecem sem o nome, o que não torna o diagrama incorreto, mas torna o diagrama incompleto, pois do ponto de vista da transição de estados ficamos sem conhecer o(s) evento(s) que faz(em) com que os estados mudem
Condição que deve ser atendida para que a transição ocorra (guard == true)
SINTAXE: É representada entre colchetes "[]"
O efeito é um evento extra de consequência da transição que será executado antes de entrar no novo estado
Caso exista uma condição de guarda que restringe a transição, o efeito será executado somente se a condição de guarda for atendida
SINTAXE: São escritos após uma barra "/" , depois do gatilho e condição de guarda (se houver)
Estados compostos permitem a descrição de um diagrama interno de transição de estados e podem envolver um ou mais objetos.
Estados compostos podem possuir estados especiais, tais como:
Entry point: ponto de entrada da transição de estado de um objeto no estado de outro objeto. SINTAXE: Representado por um círculo sem preenchimento, localizado na borda de um estado de entrada.
Exit point: ponto de saída do estado de um objeto para a transição de estado de outro objeto. SINTAXE: Representado por um círculo sem preenchimento marcado com um "X", localizado na borda de um estado de saída.
Um DTE permite o uso de recursos que representam paralelismos e decisões em seu fluxo de transições. Estes recursos são os mesmos utilizados em outros diagramas da linguagem, como o Diagrama de Atividades, e serão abordados no futuro.
Faça inicialmente um diagrama simples, com os estados principais e transições sem nome e aumente a complexidade conforme a necessidade;
Adicione os nomes/gatilhos das transições;
Verifique se há estados que não foram incluídos no diagrama e repita o passo 2;
Verifique se as transições possuem condições de guarda e efeitos e as adicione no diagrama;
Verifique se há estados que não foram incluídos no diagrama e repita o passo 2;
Caso seja necessário, inclua os efeitos dos estados;
Caso seja necessário, utilize elementos avançados como DTE Composto, paralelismo e decisões por último.
1) Dado o exemplo a seguir de DTE de uma Turma, faça as alterações solicitadas:
a) Acrescente o estado "Concluída" quando o semestre for encerrado e as transições necessárias.
b) Acrescente a possibilidade de uma reabertura de turma, caso a capacidade da turma aumente utilizando os elementos necessários.
c) Faça as alterações necessárias para que estudantes sejam desmatriculados de uma turma, caso esta seja "Cancelada" ou "Concluída".
2) Realizar a modelagem de estados que representem o empréstimo de exemplares no cenário da Biblioteca DeAaZ.
3) Realizar a modelagem de estados que representem situações críticas de um sistema de estacionamento.
Escolha uma das óticas listadas para modelagem:
Estados da catraca do estacionamento
Estados do ticket de estacionamento
Estados da ocupação/vagas do estacionamento