View
111
Download
0
Category
Preview:
Citation preview
Modelagem Orientada a Objetos
Modelagem Dinâmica
Diagrama de Estados
Objetivos de umdiagrama de estados
Representar o comportamento dinâmico de classes individuais
Representar o comportamento dinâmico de colaboração entre classes
Elementos de umdiagrama de estados os estados possíveis para os objetos de uma certa classe as transições de estado os eventos que causam transições de estados as ações decorrentes de
– uma transição de estado– entrada em um estado– saída de um estado
as ações realizadas por objetos enquanto estão em um certo estado– durante todo o tempo em que o objeto está no estado– decorrente de algum evento
as condições para ocorrer uma transição de estado ou para a execução de uma ação.
Diagramas de Estados
Relaciona eventos e estados Um objeto muda de estado dependendo do evento
e do estado atual. Transição: modificação de estado causada por
um evento (mesmo quando estado final e inicial coincidem).
Um evento pode ser irrelevante para um objeto em um certo estado.
Exemplo: linha telefônica
Diagramas de EstadosExemplo : Linha telefônica
Inativa
Sinal de discar
Ligando
Tocando
Interligando
Desligando
Queda-da-linha
Mensagem gravadaSinal de
ocupado
Sinal de ocu-pado rápido
no-gancho
dígito( n )
no-gancho
Discando
Mensagemterminada
encaminhado
telefone chamado atende
telefone chamado desliga
número válido
número invalido
fora-do-gancho
dígito( n )
número ocupado
tronco ocupado
queda-da-linha
queda-da-linha
Diagramas de EstadosExemplo : jogo de xadrez
Vez dasbrancas
Vez daspretas
brancasjogam
pretasjogam
Início cheque-mate
empate forçado
empate forçado
cheque-mate
Pretasvencem
Brancasvencem
Empate
Diagrama de estados de uma só passagem para um jogo de xadrez
Tipos de diagramas de estados
Diagrama de laço contínuo: representa um ciclo de vida; sem estado inicial ou final. Exemplo: linha telefônica.
Diagrama de uma só passagem: representa objetos com vida finita; possuem um estado inicial (criação do objeto) e um estado final (destruição do objeto).
Exemplo: jogo de xadrez
Condições
Uma condição é uma função booleana de valores, válida dentro de um intervalo de tempo.
Condições funcionam como guardas nas transições: uma transição só dispara quando ocorre o evento e a condição de guarda for verdadeira.
Exemplo: Veículo em um cruzamento.
Diagramas de EstadosExemplo: Veículo em um cruzamento
Leste / Oestepodem dobrar
à esquerda
tempodecorrido
Diagrama de estados com transições guardadas
Leste / Oestepodem ir em frente
Norte / Sulpodem ir em frente
tempo decorrido [ carrosnas vias esquerdas N / S ]
tempo decorrido [ carrosnas vias esquerdas L / O ]
tempodecorrido
tempo decorrido [ sem carros
nas vias esquerdas N / S ]
Norte / Sulpodem dobrar
à esquerda
tempo decorrido [ sem carros
nas vias esquerdas L / O ]
Controle de Operações
Atividades e ações podem ser vinculadas a estados e eventos a fim de se especificar o que faz o objeto quando está em um determinado estado e o que faz em resposta a estímulos externos.
Definem o comportamento do objeto!
Atividade
Está sempre vinculada a um estado Consome tempo para se completar É executada continuamente durante o tempo em
que o objeto está num certo estado Notação: faça: atividade Exemplo: Um vendedor logo após ter recebido
dinheiro para pagamento do item vendido deve calcular o troco.
faça: calcular troco
Ação
Está normalmente vinculada a um evento, mas também pode estar vinculada a um estado (ações de entrada, saída e internas)
É executada "instantaneamente" Notação: evento / ação Exemplo: Exibir um menu quando o botão direito
do mouse é pressionado.
botão direito pressionado / exibir menu
Controle de Operações
Ações para um menu instantâneo
Inativo
botão direito pressionado /exibir menu instantâneo
Menu visível
botão direito liberado / apagar menu instantâneo
cursor movimentado / iluminar item do menu
Diagrama de Estados com Operações
Notação
Estado 1faça : atividade 1
Evento 1 ( atributos )[ condição 1 ] / ação 1 Estado 2
. . .
Exercício:reescrever o diagrama de uma chamada telefônica utilizando a notação acima
Diagramas de Estados Nivelados
Permitem refinamentos sucessivos do modelo dinâmico
Permitem uma descrição estruturada do sistema Pode-se expandir:
– um evento e sua correspondente ação
– uma atividade realizada em um certo estado Exemplo: Máquina de vender
Diagramas de Estados NiveladosExemplo : máquina de vender
Inativa
moedas introduzidas( quantia ) verificar saldo Recolhendo dinheiro
moedas introduzidas ( quantia ) /acrescentar ao saldo
faça : entregaritem
faça : preparartroco
faça : testar item e calcular troco
[ troco = 0 ] [ troco < 0 ]
[ troco < 0 ]
Selecionar ( item )[ item vazio ]
cancelar / devolver moedas
Diagramas de Estados NiveladosExemplo : máquina de vender
Faça : moverbraço para afileira correta
faça : prepararitem
Faça : moverbraço para a
coluna correta
faça : empurraritem para forada prateleira
braço pronto braço pronto empurrado
dígito( n )
clear
faça : acrescentar
dígito
dígito( n )
enter
Selecionar( item )
Atividade entregar item da máquina de vender
Transição selecionar item da máquina de vender
Generalização de Estados
Os estados de um objeto podem ser organizados de forma hierárquica, em super-estados e sub-estados.
Um sub-estado é um refinamento de um super-estado, i.e., um sub-estado é um dos possíveis estados do objeto dentro daquele super-estado.
Um sub-estado herda as transições do super-estado; transições que se aplicam ao super-estado também se aplicam ao sub-estado.
Exemplos: linha telefônica, transmissão automática de um automóvel
Generalização de Estados Exemplo : transmissão de um carro
Primeira Segunda Terceira
sobe
Neutro Réapertar R
apertar N
reduz
sobe
reduz
Para a frente
pára
apertar Fapertar N
Generalização de Eventos Os eventos que ocorrem em um sistema podem ser
organizados de forma hierárquica, em super-eventos e sub-eventos.
Um sub-evento herda atributos do super-evento. Onde um evento é descrito qualquer sub-evento seu é
implicitamente descrito. A generalização de eventos facilita a abstração e permite
concisão na representação de diagramas. Exemplo: Entrada do usuário.
Generalização de EventosExemplo : eventos de teclado
evento
Entrada do usuário
Botão do mouse
apertado
controle gráfico
espaço alfanumérico pontuação
tempo
dispositivo
Botão do mouselocalização
caracter do tecladocaracter
Botão do mouse
liberado
Hierarquia parcial deeventos para eventos
de teclado
Concorrência de Agregação
O estado de um objeto composto (um agregado) é determinado pelos estados dos objetos que o compõem.
Exemplo: O estado de um carro é determinado pelo estado da ignição, da transmissão, do freio, do acelerador, do motor, ...
Os componentes de um agregado normalmente interagem entre si: a mudança de estado de um componente pode disparar uma transição em outro componente.
A interação entre diagramas de estados de componentes é representada através de eventos compartilhados e/ou condições de guarda.
Concorrência de Agregação
CarroIgnição Transmissão Freio Acelerador
Desligada Partida Ligada
Girar chave para dar partida[ transmissão em Neutro ]
desligar a chave
liberar chave
Ignição
Desligado Ligado
apertaracelerador
apertar freio
liberar acelerador liberar freio
Acelerador Freio
Desligado Partido
Concorrência Interna de Objetos
O diagrama de estados de um objeto pode ser particionado de acordo com atributos e ligações em sub-diagramas.
O estado do objeto compreende um estado de cada sub-diagrama.
Um mesmo evento pode causar transições em mais de um sub-diagrama.
Exemplo: Jogo de bridge rubber.
Concorrência Interna de Objetos
Não vulnerável
Não vulnerável
Vulnerável
Vulnerável
N-S vence rubber
L - O vence rubber
Vulnerabilidade N - S
jogo N - S
Vulnerabilidade L - O
jogo L - O
jogo N - S
jogo L - O
Jogando rubber
Jogo de bridge com estados concorrentes
Transição Automática
Disparada quando a atividade vinculada a um estado termina
O "evento" que causa a transição é o término da atividade
Exemplo: Máquina de vender no estado correspondente a atividade testar item e calcular troco pode disparar uma de quatro transições automáticas.
Ações de Entrada e de Saída
Ações vinculadas ao ato de entrar ou sair de um estado
Não adicionam poder de expressão, mas permitem uma representação mais concisa
Exemplo: Controle de uma porta de garagem (p. 135)
Envio de Eventos
Uma ação pode ser especificada como enviar um certo evento para outro objeto.
Notação: enviar E (atributos)
(palavra enviar pode ser omitida) Exemplo: Uma linha telefônica envia o evento
ligar(número-de-telefone) para o comutador quando um número completo é discado.
número completo / ligar(número-de-telefone)
Sincronização de Eventos Concorrentes
Um objeto pode executar várias atividades de forma concorrente (paralela).
As atividades não são necessariamente sincronizadas, mas todas devem terminar para que ocorra transição de estado.
Exemplo: Caixa automática.
Sincronização de Eventos Concorrentes
Faça : entregar dinheiro
Faça : ejetar cartão
Pronta parareinicializar
Emitindo
cartão recolhido
dinheiro recolhido
Preparação
Recommended