UML Statechart CIn-UFPE
Modelagem Comportamental Diagramas de Use Case Diagramas de Seqüência Diagramas de Colaboração Statecharts Diagramas de Atividades CIn-UFPE
Máquinas de Estado Podem ser aplicadas para modelar o comportamento de vários elementos de UML: casos de uso específicos, objetos individuais, conjuntos de objetos, ou um sistema por completo. Especificam as seqüências de estados de um elemento em resposta aos eventos. Estado Transição Evento Ação e Atividade CIn-UFPE
Estado É uma situação durante a vida de um elemento, na qual ele satisfaz alguma condição, executa alguma atividade, ou espera por algum evento. Exemplos: Ocioso Recebendo Pagamento Entregando item CIn-UFPE
Máquina de Vendas Ociosa Recebendo R$ Oferendo serviços Entregando Troco Despachando Item entrada de moedas(quant.) cancelar / devolver moedas [ item vazio ] [ troco < 0 ] selecionar (item) [ troco > 0 ] [ troco = 0 ] CIn-UFPE
Estado inicial É um estado especial que, explicitamente, mostra o início da máquina de estado. Pode existir exatamente um estado inicial em cada diagrama de estado. O ícone de estado inicial é um círculo compacto com uma flecha. CIn-UFPE
Estado final O estado de parada é um círculo englobando um círculo compacto com uma flecha. Normalmente, você pode assumir que a máquina de estado associada a uma classe sairá de sua existência quando o estado final é atingido. CIn-UFPE
Estados CIn-UFPE
Partes de um Estado Nome Ações de entrada (entry): Quando entrar no estado, a ação será executada Ações da saída (exit): Quando sair do estado, a ação será executada. Atividades (do): Enquanto no estado, o objeto faz algo que continuará a ser executado até ser interrompido por um evento CIn-UFPE
Partes de um estado: exemplo Nome-do-estado entry/ação-de-entrada exit/ação-de-saída do/atividade CIn-UFPE
Transição É um relacionamento entre dois estados, indicando que o objeto no primeiro estado irá executar certas ações e entrar no segundo estado quando o evento especificado ocorrer e as condições especificadas forem satisfeitas. Uma transição de estado é uma mudança de estado causada por um evento. Utiliza-se transições de estado para conectar dois estados em um diagrama de estado ou para mostrar transições de um estado para ele mesmo. CIn-UFPE
Transição Pode-se mostrar uma ou mais transições de estado desde que cada transição seja única. O ícone para uma transição de estado é uma linha com uma ponta de flecha apontando para o próximo estado. Ocioso Esfriando Quente demais CIn-UFPE
Partes da transição Estado fonte Evento de disparo Condição de guarda Ação Estado alvo CIn-UFPE
Evento de disparo Ocorrência de um estímulo que pode disparar uma transição de estado. Ex: Apertar o botão do mouse; Discar um dígito (número) É possível haver uma transição sem um evento de disparo. CIn-UFPE
Condição de guarda Expressão booleana entre [ ], colocada após o evento de disparo. A condição de guarda é avaliada apenas após a ocorrência do evento de disparo da transição. CIn-UFPE
Exemplo: Sinal de trânsito Norte/Sul seguir em frente Norte/Sul virar à esquerda encerrado o tempo [carros na via N/S esq.] encerrado o tempo [sem carros na via N/S esq.] encerrado o tempo encerrado o tempo encerrado o tempo [sem carros na via L/O esq.] Leste/Oeste virar à esquerda Leste/Oeste seguir em frente encerrado o tempo [carros na via L/O esq.] CIn-UFPE
Ação e Atividade Ação: uma resposta instantânea a uma transição Usualmente associada a uma transição, embora possa ser associada a um estado Atividade (do): Uma operação que tem uma certa duração, normalmente associada a um estado. CIn-UFPE
Problemas com Maq. Estados Máquinas de estados não estruturadas não possuem bom poder de expressão e tornam-se impraticáveis para problemas grandes. As formas de estruturação: Subestados seqüenciais Subestados concorrentes CIn-UFPE
Subestado seqüencial Ocioso Manutenção Validando Selecionando fazerManutenção Validando Selecionando Processando Imprimindo H entry / lerCartão exit / ejetarCartão cartãoInserido cancelar Ativo CIn-UFPE
Subestado concorrente Pode ser mostrado com partições pontilhadas. Relógio alarmeON alarmeOFF 12hs 24hs Acabou Bateria Inserir Bateria CIn-UFPE
Subestado concorrente Divisão do Controle: Subestado 1 Subestado 2 Subestado 4 Subestado 3 evento 0 evento 1 evento 2 evento 3 evento 4 CIn-UFPE
Transições e Estados Compostos De um estado para um estado no mesmo nível. Diretamente para um subestado, ou diretamente de um subestado. Diretamente de um superestado, o que significa que a transição de estado aplica-se para cada subestado do superestado (Supertransição). Diretamente para um superestado com subestados, o que significa transição para o estado inicial do superestado. CIn-UFPE
História Freqüentemente, quando transiciona-se diretamente para um estado com subestados, você quer retornar ao estado visitado mais recentemente no super-estado. Use a letra H dentro de um círculo para representar o log da história. H CIn-UFPE
História Neste exemplo, quando ocorrer uma falha, o super-estado Failure poderá começar em qualquer dos subestados, dependendo da última visita ao super-estado. CIn-UFPE
Relação entre diagrama de classes e statecharts Statecharts especificam uma seqüência permitida de mudanças de estado nos objetos associados às classes do Diagrama de Classes. Constrói-se um Statechart para cada classe com comportamento temporal significativo. Objetos se comunicam pelo envio e resposta a eventos. CIn-UFPE
Relação entre diagrama de classes e statecharts Eventos, ações e atividades podem ser representados como operações das Classes. Diferenças temporais de estado de um objeto são apropriadamente modeladas através de estados diferentes de uma mesma classe. CIn-UFPE
Dicas Digramas de Use Cases e Interação ajudam o início do processo de construção de Statecharts. Somente construa Statecharts para classes de objetos com um comportamento dinâmico significativo. Nem todas as classes de objeto necessitam de um Statechart. Somente considere os atributos relevantes quando da definição de um estado. Nem todos os atributos mostrados nas classes precisam ser usados num Statechart. CIn-UFPE