Upload
bruno-almeida-valgueiro
View
215
Download
0
Embed Size (px)
Citation preview
Modelação OO1
Modelação dinâmica
Análise do sistema do ponto de vista da sua evolução temporal, descrevendo o fluxo de controlo, as interacções e a sequenciação de operações num sistema de objectos activos concorrentes.
modelo dinâmico, por oposição ao modelo estático de objectos que mostra os respectivos relacionamentos num dado instante
controlo descreve as sequências de operações que ocorrem em resposta a estímulos externos, sem atender ao que as operações fazem, sobre que operam ou como são implementadas
estado de um objecto: os valores dos atributos e as ligações em que participa evento é algo que acontece num instante
• [Voo 123 parte de Lisboa ou Jogador avança a pedra]• os eventos não têm duração (no modelo; na realidade têm, só que são rápidos face
à granularidade da escala temporal base da abstracção• eventos concorrentes - não há relação de causalidade entre eles; não se afectam
- contraexemplo: a partida tem que ser antes da chegada
Modelação OO2
Eventos
Evento - transmissão unidireccional de informação de um objecto a outro• uma chamada de subrotina pode devolver um valor; resposta a um evento é
um outro evento separado debaixo do controlo do 2º objecto• um evento tem ocorrência única o tempo respectivo é um atributo implícito
classe de eventos agrupa eventos com a mesma estrutura e comportamento
[Voo 123 parte de Lisboa e voo 789 parte de Paris são instâncias da classe de eventos Voo parte]
atributos servem para passar valores como parâmetros do evento
[atributos de Voo parte : linha aérea, nr. voo, cidades]• sinais: eventos sem atributos
botão do rato carregado( botão, localização)
telefone levantado
algarismo discado(dígito)
time-out
papel mal alimentado
Modelação OO3
GuiõesGuião - é uma sequência de eventos que ocorrem durante uma
execução do sistema.
âmbito de um guião• registo histórico ou simulação• todos os eventos ou só os relevantes para uma dada classse.
Guião Linha Telefónicachamador levanta telefoneinicia sinal de marcarchamador disca dígito (5)sinal de marcar terminachamador disca dígito (5)chamador disca dígito (5)chamador disca dígito (1)chamador disca dígito (2)chamador disca dígito (3)chamador disca dígito (4)
telefone chamado tocasinal de tocar no chamadorparceiro respondetelefone chamado deixa de tocarsinal de chamar desaparece do
telefone chamadortelefones ligadosparceiro chamado desligatelefones desligadoschamador desliga
Modelação OO4
Traço de eventos
cada evento transmite informação de um objecto para outro
• traço de eventos - guião enriquecido com os emissores e receptores dos eventos (indicados por setas)
• uma linha vertical por cada objecto envolvido
• tempo evolui de cima para baixo.
levanta telefoneinicia sinal de marcar
disca dígito (5)sinal de marcar termina
disca dígito (5)disca dígito (5)
disca dígito (1)disca dígito (2)
disca dígito (3)disca dígito (4)
sinal de tocar tocaresponde
sinal de chamar desaparece deixa de tocartelefones ligados telefones ligados
desliga
telefones desligados telefones desligadosdesliga
Chamador Linha telefónica Chamado
Modelação OO5
Estados
estado - abstracção dos valores de atributo e ligações de um objecto• agrupam-se num mesmo estado conjuntos de valores que provoquem uma
resposta a um evento qualitativamente semelhante (quantitativamente pode ter variações)
• resposta a eventos: acções e mudanças de estado [no estado de ouvir o sinal de marcar, discar um dígito provoca a interrupção do sinal e a passagem para um estado de marcação em curso]
eventos pontos no tempo (separam estados)estados intervalos (separam eventos)
• o estado de um objecto depende da sequência de eventos recebidos• alguns eventos podem ser esquecidos por alguns estados [o telefone, ao chegar
ao estado de inactivo, esquece toda a sequência de eventos anteriores]
Modelação OO6
Escolha dos estados
estado• tem duração, associa-se a actividades contínuas ou que são
demoradas• pode ser definido por uma condição [água estar no estado
líquido é equivalente a temperatura entre 0ºC e 100ºC] declarativa
• ignorar os atributos irrelevantes para o comportamento do objecto
• agrupar num único estado todas as combinações de valores e ligações que apresentam a mesma resposta a eventos
• associa-se estado só a objectos e não a ligações (embora fosse possível); os valores das ligações ficam nos objectos respectivos
Modelação OO7
Caracterização de estados
Estado: Alarme a tocarDescrição: alarme do relógio está a tocar para indicar o limite do tempoSequência de eventos que produz o estado:
activa alarme( hora limite)
qualquer sequência que não inclua apagar alarmehora corrente = hora limite
Condição que caracteriza o estado:alarme=activo, hora limite < hora corrente < hora limite + 20 seg, e nenhum botão accionado
depois da hora limite
Eventos aceites no estado:evento acção estado seguintehora corrente= hora limite + 20 desactiva alarme normalbotão accionado desactiva alarme normal
Modelação OO8
Diagramas de estados
Diagrama de estados - grafo cujos nós são estados e cujos arcos dirigidos são transições etiquetadas por nomes de eventos.
transição estado seguinte = f( evento, estado corrente )
todas as transições a sair de um estado devem corresponder a eventos diferentes o diagrama especifica uma sequência de estados (um caminho no grafo) causada por uma
sequência de eventos se ocorrer um evento que não corresponde a nenhum arco, nenhuma transição é disparada
e o evento é ignorado os estados não definem totalmente todos os valores do objecto [estado discando
corresponde a muitos números possíveis, todos com o mesmo comportamento] um diagrama descreve o comportamento de uma única classe de objectos; todas as suas
instâncias partilham esse diagrama; como cada uma tem o seu próprio estado, tem também a sua evolução autónoma
Modelação OO9
A linha telefónicaInactivo
Desligado
Sinal de ocupado
Sinal de interrompido
Tempo máximo
Mensagem gravada
no descanso
levantado
dígito(n) tempo máximo
número válidonúmero inválido
número ocupado
ramal ocupado
resposta
desligamensagem dada
Ligado
Tocando
Ligando
Discando
Sinal de marcar
dígito(n)
tempo máximo
encaminhada
no descanso
Modelação OO10
Objectos finitos
Início Vez dasbrancas
Vez daspretas
Pretas ganham
Empate
Brancas ganham
xeque-mate
jogadasnegras
jogadasbrancas
paralisado
xeque-mate
paralisado
o diagrama da linha telefónica é um ciclo contínuo o do xadrez tem início e fim; a criação do objecto arranca no estado inicial; há vários
estados finais; chegar lá implica destruição do objecto modelo dinâmico - é uma colecção de diagramas de estado, um para cada classe, que
interagem através de eventos partilhados e representa a estrutura de controlo de um sistema
um guião está para o modelo dinâmico, como um diagrama de instâncias para o modelo de objectos
Modelação OO11
CondiçõesCondição - função Booleana de valores dos objectos, válida num intervalo de
tempo; corresponde a um estado.
não é um evento, que não tem duração guarda - uma transição guardada dispara se, quando o seu evento ocorre, a condição
associada é verdadeira[Quando se trava bruscamente (evento), se estiver a chover (condição), o carro entra em
derrapagem (estado seguinte)] notação: condição de guarda numa transição representada por uma condição Booleana
entre parênteses rectos, a seguir ao nome do evento
Norte/Sul podeseguir em frente
time-out [carros na pista esquerda N/S] Norte/Sul podevirar à esquerda
Este/Oeste podevirar à esquerda
Este/Oeste podeseguir em frentetime-out [carros na pista esquerda E/O]
time-out [sem carrosna pista esquerda N/S]
time-out [sem carrosna pista esquerda E/O]
time-outtime-out
Semáforo
Modelação OO12
Operações
Actividade - operação que demora algum tempo a completar-se; associada a estado.
operações executadas em resposta aos respectivos estados ou eventos actividades contínuas [telefone a tocar]
sequenciais [controlo de um transporte robotizado, com fim] notação - do: A dentro de uma caixa de estado a actividade A começa na entrada para
o estado e termina na saída causada por• um evento, nas contínuas• completação (normal), nas sequenciais• um evento (interrupção prematura), nas sequenciais
Modelação OO13
Operações (cont.)
Inactivobotão direito em baixo /mostra menu popup
Menu visívelbotão direito em cima /apaga menu popup
cursor deslocado /realça item do menu
Acção - operação instantânea; associada a evento.
instantânea - duração insignificante comparada com a granuralidadedo tempo no diagrama de estados não interessa a estrutura interna, para efeitos de controlo
• estrutura interna interessa modelar a operação como actividade, com eventos de início, fim ou intermédios
acções servem também para representar operações internas de controlo da computação [atribuição de valores; geração de outros eventos]
notação - a seguir ao evento causador pôr "/" e o nome da acção
Modelação OO14
Linha telefónicaInactivo
Desligado
Sinal de ocupado
Sinal de interrompido
Tempo máximo
Mensagem gravada
no descanso
levantado
dígito(n) tempo máximo
número válidonúmero inválido
número ocupado
ramal ocupado
resposta/ liga linha
chamado desliga/desliga linhamensagem dadaLigado
Tocando
Ligando
Discando
Sinal de marcar
dígito(n)
tempo máximo
encaminhada
no descanso
do: toca sinal do: toca apito
do: passa mensagem
do: busca ligação
do: toca campaínha
do: sinal ocupado lento
do: sinal ocupado rápido
no descanso/ desliga linha
Modelação OO15
Diagramas não estruturados
~A~B~C
~A AB
~B
C~C ~A~B C A~B C
A~B~C
~A B C
~A B~C
A B~C A B C
A~A
B~B
C
~C
B
~B~A
A
~C C
C~C
~BB
A~A
A~A
BB
~B~B
C ~C~C
C
• três atributos Booleanos independentesafectam o controlo
• isolando-se os três componentes do estado em máquinas separadas
Modelação OO16
Diagramas estruturados
a ideia é permitir descrições do modelo a níveis de abstracção diferentes; o que num nível é considerado atómico pode ser expandido para se analisar a sua estrutura interna, num nível inferior, usando um subdiagrama encaixado com estado inicial e final
mais notação: um evento dentro de um estado significa que a transição resulta no mesmo estado; uma transição sem evento dispara logo que a actividade no estado se completa
Inactivomoedas( montante ) / põe balanço Recolhe dinheiro
moedas (montante) /adiciona ao balanço
do: testa item e calculatroco
[troco<0]escolhe(item)[item vazio]
[troco=0] [troco>0]
do: faz trocodo: entrega item
Máquina de venda
Modelação OO17
Diagramas encaixados
Detalhe da actividade entrega (item)
do: move o braço para a fila correcta
do: move o braço paraa coluna correcta
do: tira item da prateleira
braço pronto braço pronto tirado
• estes estados e eventos são invisíveis no diagrama de alto nível inicial os eventos também podem ser expandidos em diagramas subordinados: escolhe(item)
corresponde a vários eventos de nível inferior
do: inicializa item do: acrescenta dígito
limpa
dígito(n)
aceita
escolhe(item)
dígito(n)
Modelação OO18
Generalização de estados Generalização de estados (associação ou) - um objecto num estado do diagrama de alto
nível tem que estar em exactamente um estado do diagrama encaixado (subestado).
os subestados herdam as transições e acções dos seus superestados, a menos que as revoguem [exemplo da linha telefónica, criar o superestado Activo contendo todos os estados excepto Inactivo; definir em Activo a transição no-descanso para passar de qualquer dos estados para Inactivosimplificação que evita a explosão combinatorial de transições]
Segunda TerceiraPrimeiraredução
subida
paragemFrente
redução
subida
Pontomorto
Marchaatrás
carrega N
carrega R
carrega F carrega N
Transmissão
Modelação OO19
Observações
Transmissão automática• superestado indicado por um contorno contendo todos os seus subestados• dentro do estado Frente o estado inicial por omissão é o Primeira transição sem
evento da bolinha)• a transição no evento paragem do contorno Frente para o estado Primeira representa
uma transição herdada por todos os subestados: em qualquer velocidade para a frente, uma paragem faz passar para Primeira
• Frente é um estado abstracto; o controlo tem que estar num estado real Hierarquia de eventos
• suporta a herança de atributos dos eventos [tempo é atributo de todos os eventos]• um evento dispara transições em todos os seus ascendentes• a hierarquia permite trabalhar com diferentes níveis de abstracção em diferentes
pontos do modelo
Modelação OO20
Generalização de eventos
espaço alfanumérico pontuação
botão do rato embaixo
botão dorato emcima
controlo gráfico
botãodo ratolocalização
tecladocaracter
entrada doutilizadordispositivo
eventotempo
Modelação OO21
Concorrência na agregação
Travão
modelo dinâmico - descreve um conjunto de objectos concorrentes, cada um com seu estado e seu diagrama de estados, a evoluir independentemente
diagrama de estados de uma montagem - colecção dos diagramas de estados dos componentes
agregação concorrência
• associação e: estado da agregação composto de um estado do primeiro diagrama e um do segundo e um de cada um dos outros
os componentes interagem através das guardas, com preservação da modularidade
Carro
Ignição Transmissão Travão Acelerador
Ignição
Transmissão
Acelerador
[Transmissão em Neutro]
Modelação OO22
Concorrência num objecto partição em subconjuntos de atributos e ligações, cada qual com o seu subdiagrama
(estado do objecto tem um estado de cada subdiagrama) delimitado por linha a tracejado; nome geral separado do diagrama por uma linha
Preparação do despertador
Banda
Selecção do programa
Activa alarme
Programabanda escolhida
Alarmeligado
comuta(banda) sintoniza(frequência)
Horapronto
marca(hora)
pronto
Modelação OO23
Acções de entrada e saída acções - em vez de as associar só às transições, associar com a entrada ou a saída num
estado: indicar dentro do estado, com a palavra reservada entry/ ou exit/
AbertoFechado
A abrir
A fechar
acciona /motor para cima
acciona /motor para baixo
porta fechada /motor desligado
porta aberta /motor desligado
acciona /motor para cima
Abertoentry / motor desligado
Fechadoentry / motor desligado
A abrirentry / motor para cima
A fecharentry / motor para baixo
acciona
acciona
porta aberta
acciona
sequência:1 acções na transição de chegada2 acções na entrada (entry)3 actividade (do)4 acções na saída (exit)5 acções na transição de partida
só a actividade é interrompível; as acções são sempre executadas
• põe em evidência as partes comuns a todas as transições de entrada ou saída
• especialmente útil em estados com subdiagramas
Porta
porta fechada
Modelação OO24
Mais extensões
acção interna - causada por um evento que não provoque mudança de estado• notação: indicar <evento>/<acção>, dentro do estado• diferente de auto-transição porque não executa as acções de entrada e saída
transição automática - transição sem evento• dispara mal a actividade interna (do) termine• se não houver actividade, dispara imediatamente após a entrada (as acções de entrada
e saída são executadas)• pode ter guarda [máquina de venda]; se a guarda for falsa, o estado permanece activo
até ocorrer a mudança da condição (evento implícito)
Modelação OO25
Resumo da notação
Estado 1do: actividade1
entry / acção2
exit / acção3
evento3 / acção4
Estado 2
• • •evento1 (atributos1) [condição1] / acção1
Classe de objectos
evento2 (atributos2)
Modelação OO26
Interacção
Um sistema de objectos interage por troca de eventos.
uma acção send E(atributos) envia o evento E ao objecto ou objectos que o recebem um evento pode ser dirigido a um conjunto de objectos ou a um objecto simples; todos os
objectos com transições no evento podem aceitá-lo concorrentemente a notação com seta a ponteado, de uma transição para um objecto, significa que o evento é
enviado ao objecto quando a transição dispara competição - situação em que um estado pode aceitar eventos de mais do que um objecto
• o resultado pode depender da ordem de forma pouco clara
[ exemplo da porta : accionar o botão único de comando no momento em que a porta está a atingir a abertura máxima dá indefinição sobre se a porta fica aberta ou vai fechar]
a situação de competição não é sempre um erro de projecto, mas há muitos casos em que é um problema
• exigir simultaneidade no recebimento de eventos não tem significado no mundo real
Modelação OO27
Sincronização
Emissão (Multibanco)
Preparação
do: liberta cartãopronto
Concluído
do: liberta dinheiro recolhe dinheiro
recolhe cartão
separação - quando um objecto passa a fazer várias actividades concorrentemente (ordem irrelevante)
• transição para estado com subdiagramas concorrentes activa cada um dos subdiagramas
fusão - quando as actividades concorrentes têm que terminar antes de passar ao estado seguinte
• outros subdiagramas que não estejam na fusão são automaticamente terminados
Modelação OO28
Relação com o modelo de objectos
modelo dinâmico - especifica a sequência de alterações aos objectos do modelo objecto estrutura do modelo dinâmico condicionada pela do modelo de objectos
• um subestado refina os valores e as ligações que um objecto pode ter• um subestado pode ser visto como uma generalização de restrição (sítio melhor para
representar isto é o modelo dinâmico, quando as linguagens não suportam directamente o conceito)
• um objecto pode estar em estados diferentes ao longo do tempo, mas não pode mudar de classe: diferenças inerentes entre objectos classes diferentes; diferenças temporárias estados diferentes
modelo dinâmico de uma classe herdado pelas subclasses; estas podem estender o diagrama com um subdiagrama que envolva os atributos específicos da subclasse (extensão), mas não altere o diagrama da superclasse
Modelação OO29
Rádio-despertador
18:35 89.5 FM
minutos
horasalarme
tempo
dormirdesligaroff radio alarme
vol
sintonia
obter o diagrama dinâmico• o botão dormir faz tocar durante uma hora (desligar cala-o logo)• ao chegar ao instante do alarme, começa a tocar durante 1 hora (desligar só
desliga durante 10 minutos)
Modelação OO30
Modelação do rádio-despertador
Desligado Funcionardo: radio activo
Despertadorradio
off
alarme
radio
Ruído Estaçãosintoniza(freq)
dessintoniza
Botão de sintonia
Cortado Activoajusta(nível)/alterar nível
ajusta(nível)/alterar nível
[nível=0]
Botão de volume
Hora actualdo: mostrahora actual
Hora despertardo: altera hora
despertar
botão alarmecarregado
botão alarmelivre
Display
Desligado Tocar
[em Estação e Activo e(Funcionar ou Despertar
ou Adormecer)]
[em (Ruído ou Cortado)ou (Desligado ou Armado
ou Latente)]
Altifalante
InterruptorRádio-despertador
Modelação OO31
Subdiagrama Hora despertar
Mostrado: mostra
hora despertar
Põe minutosdo: incrementa
minutos despertarmod 60
botão minutoscarregado
botão minutoslivre
Hora despertar
Põe horasdo: incrementahoras despertar
mod 24
botão horascarregado
botão horaslivre
Modelação OO32
Subdiagrama Hora actual
Mostrado: mostrahora actual
Acerta minutosdo: incrementa
minutos mod 60
botão minutoscarregado
botão minutoslivre
Hora actual
Acerta horasdo: incrementahoras mod 24 botão horas
carregado
botão horaslivre
Altera horado: mostrahora actual
botão tempocarregado
botão tempolivre
Modelação OO33
Subdiagrama Despertador
Adormecerdo: radio activo
Latentedo: incrementa
minutos mod 60
desligar/desliga
10 minutos
Despertador
Armado
minuto [hora actual- hora despertar>60]
/ desliga
minuto [hora_actual =hora_despertar] Despertar
do: rádio activo
desligar/desliga
dormir
60 minutos
Modelação OO34
Encontro de ténisModelar um encontro de ténis do ponto de vista de evolução da pontuação ao longo do tempo. AtletaEncontro
Partida
JogopNpS
N
S
1,2
1,2
Início Vantagemnula
Bola dejogo N
Bola dejogo S
Vence N
Vence S
pN - pontos do N
pS - pontos do S
Ng - N ganha
Sg - S ganha
inc - incrementa
Ng[pN<30]/inc pN
Sg[pS<30]/inc pS
Ng[pN=30]/inc pN
Sg[pS=30]/inc pS
Sg[pS<30]/inc pS
Ng[pN<30]/inc pN
Sg[pS=30]/inc pS
Ng[pN=30]/inc pN
Ng[pN>30]
Ng
Sg[pS>30]
Sg
Sg[pS>30]Ng[Np>30]