Engenharia de Software Orientada a
objetos
Prof. Rogério Celestino dos Santos
Objetivo
Um diagrama de estados especifica uma máquina de estados, com estados e transições entre estados causadas por eventos
Pode também especificar as ações e atividades realizadas em resposta a eventos ou durante a permanência em estados,
respectivamente
Usado normalmente para modelar o ciclo de vida dos objetos de uma classe (objeto visto como máquina de estados)
O estado de um objeto é uma das possíveis condições nas quais um objeto pode existir.
Comportamento e ciclo de vida de objetos ou
sistemas reativos
Um diagrama de estados é útil para modelar o comportamento e o ciclo de vida de um objeto ou sistema reativo
Objeto/sistema reativo: funciona por resposta (reação) a estímulos (eventos)
Comportamento reativo ≠ comportamento invocável (operações)
Sistema reativo ≠ sistema transformacional (tipo filtro Unix)
Sistemas de interação com o usuário (como formulários, botões, etc.) são tipicamente reativos
Sistemas de tempo real (ex: semáforo) podem ser vistos
como sistemas reativos que reagem a eventos temporais (timeout, ...)
Sistemas reativos geralmente têm memória - um estado interno que acumula o efeito dos estímulos recebidos no passado e afeta a resposta a estímulos futuros
Comportamento e ciclo de vida de objetos ou
sistemas reativos
Ciclo de vida de um objeto/sistema: as seqüência de estados
por que pode passar durante a sua vida em resposta a eventos, em conjunto com as respostas a esses eventos, ou seja:
os estados possíveis (exemplo - estado civil: solteiro, casado, ...)
as transições de estado possíveis (exemplo: pode passar de solteiro para casado, mas não o contrário)
os eventos que causam essas transições (exemplo: o casamento implica a passagem ao estado de casado)
as ações do objeto em resposta a esses eventos (ex: despedida de solteiro)
Objeto como máquina de estados
Objetos da mesma classe têm o mesmo ciclo de vida, para isso basta construir um diagrama de estados para a classe
Notação básica
Seqüência de mudança de estado:
Ocorre o evento associado à transição e a condição de guarda é verdadeira
É interrompida a atividade associada ao estado de origem, se não tinha já terminado
É executada a ação á saída do estado de origem
É executada a ação associada à transição
Estados
Um estado é uma condição ou situação na vida de um objeto, durante a qual o objeto satisfaz alguma condição, realiza alguma atividade ou espera por algum evento
Exemplo (relacionado ao estado civil de uma pessoa): solteira, casada, ...
Escolha dos estados e relação com atributos e ligações:
Saldo da conta bancária, após saque, ficou igual a zero, conta bancária bloqueada para saques;
Um produto esta no estado indisponível quando a quantidade em estoque fica zero.
Estados
É determinado pelas ligações com outros objetos.
Quando uma peça de veiculo esta no estado de indisponível é
necessário suspender a Ordem de Serviço de atendimento do veiculo.
Se Aluno não devolveu livro na biblioteca no prazo
Estados inicial e final
O estado inicial defini a partir de que ponto um DE
deve começar a ser lido.
Estados inicial e final
O estado final é representado como um círculo
“eclipsado” e indica o fim do ciclo de vida de um
objeto.
Transições
Uma transição é uma relação entre dois estados indicando que um objeto no 1º estado realizará uma certa ação (opcional) e passará ao 2º estado quando um evento especificado ocorrer se uma condição especificada (opcional) for satisfeita
Duas transições ao sair do mesmo estado devem ter eventos diferentes ou condições mutuamente exclusivas, para que o diagrama de estados seja determinístico
Se, num dado estado, ocorrer um evento que não corresponde a nenhuma transição, nenhuma transição é disparada e o evento é ignorado
Transição automática: transição sem evento
Tem como evento implícito o fim da atividade associada ao estado de origem
Transições
Os estados estão associados a outros pelas
transições e é mostrada como uma seta
conectando-os.
Transições
Uma transição pode ser rotulada com uma expressão
da seguinte forma:
Auto-transição
É quando um objeto sai do estado em que se
encontra, podendo executar alguma ação quando
dessa saída, e em seguida retornar ao mesmo
estado.
Observe que Registrando locação é um estado do objeto da
classe Locação, a busca e o registro do filmes se dá nas classes Cópias de Filmes e Itens da locação.
Auto-transição
Um aluno solicita o empréstimo de um livro da biblioteca.
Observe que o estado EmprestandoLivro é um estado do objeto da classe Emprestimo e a retirada do livro se da na classe Livro.
Eventos
Um evento é uma ocorrência significativa que tem uma
localização no tempo (instante de tempo do evento) e no espaço
No contexto de uma máquina de estados, um evento pode ter como resposta uma transição (mudança de estado) e/ou uma ação
Os eventos relevantes a um sistema de software podem ser classificados em:
Eventos de chamada: recebimento de uma mensagem de outro objeto.
Eventos de sinal: recebimento de um sinal.
Eventos temporal: passagem de um intervalo de tempo pré-definido.
Eventos de chamada
Corresponde ao recebimento de uma mensagem de outro objeto.
No evento de chamada o objeto que envia a mensagem fica esperando a execução da mesma.
Pode-se pensar neste tipo de evento como uma solicitação de serviço de um objeto a outro.
Eventos de chamada
No exemplo a seguir o pedido foi encerrado pelo cliente e faz-se necessário obter-se o valor total do pedido de itens.
Nesse caso, a classe Pedido faz uma requisição a classe ItensDoPedido para que esta encontre o valor total dos itens pedido e entregue a ela.
Eventos de sinal
Neste evento o objeto recebe um sinal de outro objeto
que pode fazê-lo mudar de estado.
No evento de sinal o objeto remetente continua o seu
processamento após ter enviado o sinal.
Exemplo:
Uma classe Impressora possui um objeto documento no estado imprimindo e pode ser alterado para impresso, quando de sua
conclusão. Este fato não impede que a classe impressora continue sendo demandada por outros objetos.
Eventos de sinal
Na situação apresentada se esta efetuando a
matricula do aluno quando é comprovado o
pagamento do boleto, anteriormente emitido. Nesse
momento o contrato é emitido enquanto se
desenvolve o processo da matricula.
No caso apresentado a matricula do aluno prossegue
independente da emissão do contrato.
Eventos Temporal
Corresponde à passagem de um intervalo de tempo
predefinido. O objeto pode interpretar a passagem de
um certo intervalo de tempo como sendo um evento.
É especificado com a cláusula after, em event, seguida
de um parâmetro que especifica um intervalo de
Eventos de mudança
É representado por uma expressão de valor lógico
(verdadeiro ou falso) e é especificado utilizando-se a
cláusula when, em event.
when(saldo > 0): significa que a transição é disparada
quando o valor do atributo saldo for positivo.
A cláusula when pode ser utilizada em eventos
temporais.
when(horário = 00:00h): emitir total
Condição de guarda - Guard
É uma expressão de valor lógico que condiciona o disparo de uma transição.
A transição correspondente é disparada se e somente o evento associado ocorre e a condição de guarda é verdadeira.
Uma transição que não possui condição de guarda é sempre disparada quando o evento ocorre.
Ações
Uma ação é uma computação atômica executável que resulta numa mudança de estado ou no retorno de um valor
A mudança de estado pode ser outro objeto
Não tem duração (pelo menos no modelo) e não pode ser interrompida
Ocorre em resposta a um evento
Ações são associadas a transições (mais comum) ou estados
Ação à entrada num estado: entry/ação
equivale a associar a ação a cada transição que entra no estado
Ação à saída de um estado: exit/ação
equivale a associar a ação a cada transição que sai do estado
Ação em resposta a evento interno a um estado: evento/ação
difere de auto-transição, porque não são executadas ações à saída e entrada e não é interrompida a atividade associada ao estado
Ações
Ao transitar de um estado para outro, um objeto pode
realizar uma ou mais ações.
Uma ação é uma expressão definida em termo dos
atributos, operações, associações da classe ou dos
parâmetros do evento que também podem ser
Estado Ponto de junção
Pode ser que o próximo estado de um objeto varie de
acordo com uma condição.
Se o valor da condição de Guarda for verdadeiro, o
objeto vai para um estado E2; se o valor for falso, o
objeto vai para o estado E3.
Estado Ponto de junção
É como se a transição tivesse uma decisão, e cada
transição de saída da decisão tivesse uma condição
de guarda própria.
Estado Ponto de junção
A cada transição de saída do ponto de junção esta associado uma
condição de guarda.
A transição que o objeto sempre segue é aquela para a qual a
condição de guarda é verdadeira. A condição falsa é utilizada para tratar as seqüências alternativas dos
Estado Ponto de junção
Quando uma das condições é verdadeira, todas as
demais são falsas.
Estado Ponto de junção
Pontos de junção permitem que duas ou mais
transições compartilhem uma “trajetória de
transições”.
De uma forma geral, pode haver um número ilimitado
de transições chegando e saindo de um ponto de
junção.
Pode haver também uma transição de saída que
Estado Ponto de escolha dinâmico
-
Choice
Representa um ponto na transição de estados de um
objeto em que deve ser tomada uma decisão, a partir
da qual um determinado estado será ou não gerado
Assim, um Estado de Ponto de Escolha Dinâmico é
representa uma escolha, apoiada por Condições de
Guarda, em que se decidirá qual o próximo estado do
objeto será gerado
Ele é representado por um círculo vazio, de onde
Estado Ponto de escolha dinâmico
-
Choice
Observe o exemplo
que trata do evento
encerramento de
uma conta bancária
onde o saldo tem
que ser zero para
que ela seja
Cláusulas do Estado
Um objeto enquanto estiver em um estado poderá
desenvolver atividades.
As atividades são representadas no interior do
retângulo que representa o estado do objeto no
momento.
Há três cláusulas predefinidas: entry,exit,do
Sintaxe geral:
Cláusulas do Estado - entry
É usada para especificar uma ação a se realizada no
momento em que o objeto assume um estado.
A ação desta cláusula é sempre executada,
Cláusulas do Estado – exit
Serve para declarar ações que são executadas
sempre, no momento, que o objeto sai de um estado.
É sempre executada, independentemente do estado
Cláusulas do Estado - do
Usada para definir alguma atividade a ser executada
continuamente enquanto o objeto encontra-se no
Transições internas de Estado
Uma transição interna é uma transição que não faz o
objeto mudar de estado
O objetivo da transição é fazer com que uma ação ou
atividade seja executada sem que uma mudança de
estado ocorra
Transições internas de Estado
Clausula event/guard/action
Estados Aninhados ou Composto
Diagramas de estado podem ficar complexos e difíceis de
gerenciar
Estados podem ser usados para simplificar diagramas
complexos
Um superestado é um estado que encerra estados
aninhados chamados subestados
Transições comuns dos subestados são representados no
nível do superestado
é permitido qualquer número de níveis de aninhamento
Estados concorrentes
Trata-se de um tipo especial de estado composto.
Um objeto em um estado concorrente pode estar em
Estados paralelos
Representa estados paralelos após uma transição
Para esta representação utiliza-se a Barra de
Sincronização (Fork e Join).
Barras de sincronização não representam decisões a exemplo de Junction
Point e Choice.
Fork\Dividir
Estados de história
Esse estado permite retornar exatamente ao ultimo sub-estado em que o objeto se encontrava quando, por algum motivo, o processo foi interrompido.
Assim, por meio de um Estado de História, podemos retornar exatamente ao ultimo subestado em que o objeto encontrava-se quando da interrupção do processo
Estados de Sub-Maquina
É equivalente a um estado composto ou concorrente,
porém, seus sub-estados não são apresentados no
diagrama, o que indica que são apresentados em outro
diagrama.
Não há divisões internas na
figura que o representa.
O exemplo mostra que o
estado Calculando novo
valor do produto será tratado
por outro Diagrama de
Maquina de Estado.
Estados cortados
São utilizados em estados de sub-maquinas quando um estado externo ao da sub-maquina gera uma
transição para um sub-estado
contido, porém não representado, no estado de sub-maquina.
O exemplo mostra uma transição do estado Produto suspenso para um sub-estado interno do estado de sub-maquina Calculando novo valor
Exercício
Uma empresa cadastra seus funcionários de acordo
com o seu estado civil, se solteiro ou casado. Para
os funcionários na situação de solteiro é fornecido
passe de ônibus. Para os funcionários na situação de
casado é fornecido passe de ônibus e vale
alimentação. Tanto o passe de ônibus quanto ao vale
de alimentação, são incluídos nos vencimentos dos
respectivos funcionários. Represente este requisito
através do diagrama de estado
Exercício 2
Desenvolva um DE para um sistema de cursos de
informática seguindo os seguintes fatos:
Primeiramente, o usuário deve selecionar o curso ao
qual a matrícula e refere
Em seguida, deve selecionar a turma da matrícula em
questão
Finalmente, o atendente irá selecionar o aluno que
deseja realizar a matrícula e, então, registrar a
Exercício 2
Considerando o DTE e a seqüência de eventos listada abaixo, marque a alternativa correta:
Eventos: new, ev1, ev0, ev2,ev3, ev5,ev0,ev2
a) Após a ocorrência dos eventos o objeto se encontra no estado estA
b) Após a ocorrência dos eventos o objeto se encontra no estado estC
c) Após a ocorrência dos eventos o objeto se encontra no estado estB
d) Após a ocorrência dos eventos o objeto se encontra no estado estD