UML Statechart CIn-UFPE 1 Modelagem Comportamental Diagramas de Use Case Diagramas de Seqüência Diagramas de Colaboração Statecharts Diagramas de Atividades CIn-UFPE 2 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 3 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 4 Máquina de Vendas entrada de moedas(quant.) Ociosa Recebendo R$ cancelar / devolver moedas selecionar [ item vazio ] (item) [ troco < 0 ] Oferendo serviços [ troco = 0 ] [ troco > 0 ] Despachando Item CIn-UFPE Entregando Troco 5 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 6 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 7 Estados Estado Inicial Estado Final desligar teclaPresioanda Ocisoso Executando término Nome Estado CIn-UFPE Nome 8 Partes de um Estado Nome Ações de entrada (entry): Ações da saída (exit): Quando entrar no estado, a ação será executada 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 9 Partes de um estado: exemplo Nome-do-estado entry/ação-de-entrada exit/ação-de-saída do/atividade CIn-UFPE 10 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 11 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 CIn-UFPE Quente demais Esfriando 12 Partes da transição Estado fonte Evento de disparo Condição de guarda Ação Estado alvo CIn-UFPE 13 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 14 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 15 Exemplo: Sinal de trânsito Norte/Sul seguir em frente encerrado o tempo [carros na via N/S esq.] Norte/Sul virar à esquerda 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 CIn-UFPE encerrado o tempo [carros na via L/O esq.] Leste/Oeste seguir em frente 16 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 17 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 18 Subestado seqüencial cartãoInserido Ativo Ocioso cancelar Validando H fazerManutenção Manutenção Selecionando entry / lerCartão exit / ejetarCartão CIn-UFPE Processando Imprimindo 19 Subestado concorrente Pode ser mostrado com partições pontilhadas. Inserir Bateria Relógio alarmeON 12hs alarmeOFF 24hs Acabou Bateria CIn-UFPE 20 Subestado concorrente Divisão do Controle: Subestado 1 evento 1 Subestado 3 evento 3 Subestado 4 evento 4 evento 0 Subestado 2 CIn-UFPE evento 2 21 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 22 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 23 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 24 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 25 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 26 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 27