• Nenhum resultado encontrado

2.Diagramadeestados

N/A
N/A
Protected

Academic year: 2021

Share "2.Diagramadeestados"

Copied!
30
0
0

Texto

(1)

1 UML – DIagramas de estados

UML – Diagramas de Estados

(Statechart Diagrams)

(2)

3 UML – DIagramas de estados,

Objectivo

„

Um diagrama de estados especifica uma máquina de estados,

com

estados

(duradoiros e em número finito) e

transições

entre

estados (instantâneas) causadas por

eventos

(instantâneos)

„

Pode também especificar as

acções

(instantâneas) e

actividades

(duradoiras) realizadas em resposta a eventos ou durante a

permanência em estados, respectivamente

„

Usado normalmente para modelar o ciclo de vida dos objectos de

uma classe (objecto visto como máquina de estados)

„

Em geral, serve para modelar a dinâmica de um sistema ou

objecto cujo estado evolui por saltos (transições instantâneas) em

resposta a eventos, com um número finito de estados

estado

(de sistema, objecto, etc.)

tempo evento

Comportamento e ciclo de vida de

objectos ou sistemas reactivos (1)

„

Um diagrama de estados é útil para modelar o comportamento e

o ciclo de vida de um objecto ou sistema reactivo

„

Objecto/sistema reactivo

: funciona por resposta (reacção) a

estímulos (eventos)

• Comportamento reactivo ≠ comportamento invocável (operações)

• Sistema reactivo ≠ sistema transformacional (tipo filtro Unix)

• Sistemas de interacção com o utilizador (com formulários, botões,

etc.) são tipicamente reactivos

• Sistemas de tempo real

(ex: semáforo) podem ser vistos como

sistemas reactivos que reagem a

eventos temporais

(timeout, ...)

• Sistemas reactivos geralmente têm

memória

- um estado interno que

acumula o efeito dos estímulos recebidos no passado e afecta a

resposta a estímulos futuros

(3)

5 UML – DIagramas de estados,

Comportamento e ciclo de vida de

objectos ou sistemas reactivos (2)

„

Ciclo de vida

de um objecto/sistema: as sequências 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 acções do objecto em resposta a esses eventos (ex: despedida de

solteiro)

„

Objecto como

máquina de estados

„

Objectos da mesma classe têm o mesmo ciclo de vida, pelo que

basta construir um diagrama de estados por classe relevante

• Interacções entre objectos aparecem pouco explícitas, como trocas de mensagens

Relação com outros diagramas

dinâmicos

„

Diagramas de estados focam o fluxo (passagem) de controlo de

estado para estado num objecto, mostrando todas as sequências

possíveis de funcionamento de um único objecto

• Bom para especificação

• Comunicação entre objectos do mesmo sistema aparece de forma pouco explícita, através de eventos gerados (como acções) na máquina de estados de um objecto que são testados (como eventos) na máquina de estados doutro objecto

„

Diagramas de interacção (sequência ou colaboração) focam o

fluxo (passagem) de controlo de objecto para objecto numa

sequência particular de funcionamento de um sistema

• Comunicação entre objectos aparece de forma explícita • Bom para ilustração mas mau para especificação

„

Diagramas de actividades focam o fluxo de controlo de actividade

para actividade numa actividade de mais alto nível (operação,

caso de utilização, etc.) de um objecto ou sistema

(4)

7 UML – DIagramas de estados

Notação e conceitos básicos

Notação básica

Estado 1

do / actividade

entry / acção

exit / acção

evento / acção

Estado 2

evento(parâmetros) [condição] / acção

transição

• Sequência de mudança de estado:

- Ocorre o evento associado à transição e a condição de guarda é verdadeira

- É interrompida a actividade associada ao estado de origem, se não tinha já terminado - É executada a acção á saída do estado de origem

- É executada a acção associada à transição

- É executada a acção à entrada do estado de destino - É iniciada a actividade associada ao estado de destino

(5)

9 UML – DIagramas de estados,

Estados

„

Um

estado

é uma condição ou situação na vida de um objecto,

durante a qual o objecto satisfaz alguma condição, realiza

alguma actividade ou espera por algum evento

• Exemplo (relativamente ao estado civil de uma pessoa): solteira, casada, ...

„

Escolha dos estados e relação com atributos e ligações:

• Foi dito anteriormente que o estado de um objecto é dado pelos valores de atributos e ligações com outros objectos que mantém num dado momento • Essa definição conduz, em geral, a demasiados estados

• Ora, no diagrama de estados, interessa apenas distinguir estados que apresentam diferentes respostas a eventos

• Assim, os estados que interessa considerar aqui correspondem, em geral, a conjuntos de valores de atributos e ligações (possivelmente expressos por condições), e ignoram-se atributos e ligações irrelevantes para o comportamento do objecto

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

acção

„

Os eventos são instantâneos

• O que interessa é que se lhe possa atribuir um instante de tempo de ocorrência

„

Os eventos podem ser de vários tipos:

• Sinais - eventos simbólicos sinalizados explicitamente

• Chamadas - invocação de operações (porque não também o retorno?) • Eventos temporais - passagem de tempo ou ocorrência de um data-hora • Eventos de mudança - uma condição tornar-se verdadeira

(6)

11 UML – DIagramas de estados,

Sinais (eventos simbólicos)

„

Sinais são modelados por classes com estereótipo «signal»

• Parâmetros (argumentos) do sinal são atributos da classe

• Hierarquias de sinais são modeladas como hierarquias de generalização

„

Envio de sinal representado por acção send

• Receptor pode ser conhecido do emissor ou não (graças a mecanismo publish/subscribe)

„

Sinais em linguagens de programação

• Sinais assíncronos, enviados imediatamente (kill, suspend, ... ) ou de forma diferida (eventos em COM+) para processos concorrentes, usando primitivas do sistema operativo

• Sinais síncronos, em que a geração do evento provoca a chamada de rotinas que tratam o evento (event handlers) no mesmo processo, usando primitivas das linguagens de programação (eventos em C# e Visual Basic.NET)

• Excepções, representadas por objectos lançados com "throw" e apanhados com "catch", em que o lançamento da excepção provoca o retorno automático de vários níveis de chamadas e o salto para uma rotina de tratamento de excepções no mesmo processo

Exemplo de hierarquia de sinais

«signal»

Mouse Down Mouse Up«signal» Control Key Pressed«signal» Printable Key Pressed«signal» «signal» Mouse Event position «signal» Key Pressed character «signal» Event time «signal» User Input Event device

(7)

13 UML – DIagramas de estados,

Chamadas

„

Um chamada representa a invocação de uma operação

• Para quem faz a chamada (ponto de vista do actuador), trata-se de

uma acção

• Para quem testa se a operação foi chamada (ponto de vista do

observador), trata-se de um evento

„

Um chamada é geralmente síncrona

• Quando uma operação de um objecto invoca uma operação noutro

objecto, o controlo passa para o 2º objecto

„

Nome do evento tem a sintaxe da invocação da operação

• Exemplo: insert(record)

• Diferença entre evento e acção por contexto

Eventos temporais

„

Evento de tempo relativo:

• Representa a passagem de um certo tempo desde um certo instante

• Notação: after(período-de-tempo)

• Por omissão, tempo conta desde a entrada no estado de origem da

transição a que está associado o evento

• Também se usa a palavra chave timeout quando não se quer precisar

o período de tempo

• Exemplo: after(5 segundos)

„

Evento de tempo abosluto:

• Representa a chegada a um certo instante de tempo (data e/ou hora)

• Notação: when(instante-de-tempo)

(8)

15 UML – DIagramas de estados,

Eventos de mudança

„

Um evento de mudança (change event) é um evento que

representa o facto de uma condição se tornar verdadeira

„

Notação: when(expressão booleana)

„

A expressão booleana pode ser usada para marcar um

tempo absoluto (ver atrás) ou para o teste contínua de uma

expressão

„

Exemplo: when(altitude < 1000)

Transições

„

Uma

transição

é uma relação entre dois estados indicando que

um objecto no 1º estado realizará uma certa acção (opcional) e

passará ao 2º estado quando um evento especificado ocorrer se

uma condição especificada (opcional) for satisfeita

„

Duas transições a 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 actividade associada ao estado de origem • Se tiver uma condição, fica à espera que a condição seja satisfeita

(9)

17 UML – DIagramas de estados,

Actividades

„

Uma

actividade

é uma execução contínua (ongoing

execution) não atómica numa máquina de estados

• Tem duração

• Pode ser interrompida

• Pode ter fim (termina por si só) ou não (só termina se for

interrompida)

„

É associada a estados

• Inicia-se ao entrar no estado

• Termina por si só ou é interrompida na saída do estado (causada por

um evento)

„

Exemplo (num telefone): do / dá sinal de marcar

Acções

„

Uma

acçã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 noutro objecto

• Não tem duração (pelo menos no modelo) e não pode ser interrompida • Ocorre em resposta a um evento

• Exemplo (num telefone): poisa auscultador / pára sinal de marcar • Acções são associadas a transições (mais comum) ou estados

„

Acção à entrada num estado: entry/acção

• equivale a associar a acção a cada transição que entra no estado

„

Acção à saída de um estado: exit/acção

• equivale a associar a acção a cada transição que sai do estado

„

Acção em resposta a evento interno a um estado: evento/acção

• difere de auto-transição, porque não são executadas acções à saída e entrada e não é interrompida a actividade associada ao estado

(10)

19 UML – DIagramas de estados,

Exemplo: Jogo de xadrez

Vez das brancas

Vez das pretas

Vitória das pretas

Vitória das brancas Empate

jogada das pretas

xeque-mate paralisado jog ada d as b rancas

xeque-mate

paralisado

Estado inicial

(criação do objecto e início

da máquina de estados) Estado final

(fim da máquina de estados e destruição do objecto) Estado Transição

Exemplo: Semáforo

Exemplo: Semáforo

N O E S N S O E N O E S N O E S Norte/Sul pode seguir em frente Norte/S ul pode virar à esquerda

Est e/Oeste pode seguir em frente

after( 15 seg )

Este/Oeste pode virar à esquerda

after( 1 5 se g )

aft er( 30 seg )[ s em carros na pista esquerda E/O ]

after( 30 seg )[ tem carros na pista esquerda E/O ] after( 30 seg )[ tem carros

na pista esquerda N/S ]

after( 30 s eg )[ sem carros na pist a es querda N/S ]

(11)

21 UML – DIagramas de estados,

Exemplo: Menu popup

Inactivo Menu

visível botão direito em baixo / mostra menu popup

botão dirteito em cima / apaga menu popup e lança acção associada ao item seleccionado

cursor deslocado / realça item do menu

Exemplo: Porta com motor

Como seria este diagrama com as acções associadas às transições? A abrir

entry/ motor para cima exit/ motor desligado

A fechar entry/ motor para baixo exit/ motor desligado

Fechado Aberto

acciona porta aberta

acciona porta fechada

(12)

23 UML – DIagramas de estados,

Exemplo: Telefone (fazer chamadas)

Inactivo

Desligado

Sinal de ocupado

Sinal de interrompido

Tempo máximo

Mensagem gravada

no descanso levantado

dígito(n) tempo máximo

número válido número inválido número ocupado ramal ocupado

resposta/ liga linha

chamado desliga/desliga linha mensagem dada

Ligado

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

(13)

25 UML – DIagramas de estados,

Casado Separado

judicialmente Solteiro Viúvo Divorciado

Casado Separado

judicialmente

Casado Separado

judicialmente Separação judicial

Solteiro Viúvo Divorciado Solteiro Nascime nto Viúvo Falecimento do cônjuge Divorciado Divórcio Falecimento Casamento

Exemplo: Estado civil

estado composto (ou super-estado ou contorno) Equivale a várias transições, com origem em cada um dos subestados! Evita explosão combinatória de transições! subestados sequenciais

Exemplo: Transmissão automática

Ponto morto

Marcha atrás

Frent e

Primeira Segunda Terceira

Primeira Segunda Terceira

subida redução subida redução paragem carrega N carrega N carrega R carrega F Estado composto

Subestados sequenciais de “Frente” Transição com origem em

super-estado e dirigida a sub-super-estado Transição dirigida a

(subestado inicial de) estado composto

(14)

27 UML – DIagramas de estados,

Subestados sequenciais

„

Vários estados de um diagrama (e transições entre esses estados) podem

ser agrupados num único

estado composto

„

Os primeiros estados passam a chamar-se

subestados sequenciais

• Subestados – por estarem encaixados dentro doutro

• Sequenciais – por não ser possível estar em dois estados simultaneamente

„

Estado composto pode ser visto simplesmente como um contorno

„

Estados e transições agrupados no estado composto formam um diagrama

de estados encaixado, podendo ter estado inicial e final

„

Também se chama a isto composição “ou”

• Estar no estado composto é estar no 1º subestado ou...ou no n-ésimo subestado

„

Também se chama a isto generalização de estados

• O estado composto é também chamado um superestado • Estar num subestado é estar também no respectivo superestado

Transições com estados compostos

„

Podem-se definir transições com origem no estado composto

• Equivale a repetir a mesma transição com origem em cada um dos subestados (excepto Q). Por outras palavras, os subestados herdam a transição.

• Simplifica-se o diagrama porque se desenha 1 transição em vez de n transições (tantas quantos os subestados), evitando-se a explosão combinatória de transições!

• A transição pode ser dirigida a um subestado ou a um estado externo

„

Podem-se definir transições com destino ao estado composto

• Equivale a definir a mesma transição com destino ao respectivo estado inicial (ou melhor, ao estado apontado por Q), que tem de estar definido

„

Vantagem comum: abstracção de detalhes do estado composto

• O estado composto pode até ser detalhado separadamente

„

No entanto, também se podem definir transições que atravessam

o estado composto, com origem ou destino em subestados

(15)

29 UML – DIagramas de estados,

Propriedades de estados compostos

„

Um estado composto pode ter todas as propriedades dos estados simples,

mas normalmente só tem o nome, que mesmo assim é opcional

„

Um estado composto pode ter acções à entrada e à saída

• Ao entrar no estado composto, executa primeira as acções à entrada no estado composto, e depois as acções à entrada no subestado de destino

• Ao sair do estado composto, executa primeira as acções à saída do subestado de origem, e depois as acções à saída do estado composto

„

A actividade do estado composto é detalhada pelos subestados e

transições entre eles, isto é, pelo diagrama de estados encaixado

„

Em alternativa, pode-se dar um nome à actividade do estado composto

(com “do/...”) , e detalha-se essa actividade separadamente (com o

mesmo diagrama de estados encaixado)

• As acções à entrada e à saída são representadas no 1º diagrama

• Uma actividade pode ser detalhada por um diagrama de estados ou actividade

(16)

31 UML – DIagramas de estados,

Subestados concorrentes

„

Um estado (

estado composto

) pode ser dividido em duas ou mais

regiões concorrentes, separadas por linhas a traço interrompido,

representando

subestados concorrentes

(que , por sua vez, têm

normalmente subestados sequenciais)

„

Subestados concorrentes correspondem a aspectos do objecto

(grupos de atributos e ligações ou sub-objectos) que evoluem de

forma mais ou menos independente

„

Dependências entre regiões podem ser expressas através de

condições de guarda (num componente testar o estado doutro)

„

Também se chama a isto

composição “e”

:

• Estar no estado composto é estar no 1º e ... e no nº subestado concorrente

„

Notar que, a um nível mais global, os objectos (e portanto os

respectivos diagramas de estados) são concorrentes entre si

Exemplo: Concorrência num objecto

Preparação do despertador

Selecção

da Banda

Selecção do programa

Activação do alarme

Selecção do

Programa

banda

escolhida

comuta(banda)

sintoniza(frequência)

Selecção

da Hora

hora

escolhida

marca(hora)

programa

escolhido

Subestados concorrentes de “Preparação do despertador” Sai quando terminarem os dois subdiagramas concorrentes

Alarme

ligado

Ao entrar, inicia os dois subdiagramas concorrentes

X

E

(17)

33 UML – DIagramas de estados,

O mesmo exemplo sem subestados

concorrentes

Preparação do despertador

Selecção da Banda e Hora Selecção do Programa e Hora banda escolhida comuta(banda) sintoniza(frequência) marca(hora) programa escolhido marca(hora) Selecção da Hora hora escolhida marca(hora) Selecção da Banda hora escolhida programa escolhido Selecção do Programa sintoniza(frequência) comuta(banda) banda escolhida hora escolhida

Tem-se (quase) o produto cartesiano dos estados do diagrama anterior!

Sincronização: separação e fusã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 deles

„

Fusão - quando as actividades concorrentes têm que terminar

antes de passar ao estado seguinte

• subdiagramas que não estejam na fusão são automaticamente terminados

Emissão (Multibanco)

Preparação

do/ liberta cartão

pronto

Concluído

do/ liberta dinheiro

recolhe dinheiro

recolhe cartão

(18)

35 UML – DIagramas de estados

Conceitos avançados

Variáveis num estado

„

Um estado pode ter um compartimento de variáveis

„

Estas variáveis são atributos da classe dona do diagrama de

estados, distinguidos porque são usadas ou afectadas por

acções no diagrama de estados

„

Todos os compartimentos (nome, variáveis e actividade

interna) são opcionais

Typing Password

password: String = “ ” fails: Integer = 0 entry / set echo invisible exit / set echo normal do / echo typing help / display help

{

compartimento de actividade interna

{

(19)

37 UML – DIagramas de estados,

Transições complexas

„

Uma

transição complexa

é uma transição com múltiplos estados

fonte (normalmente de subdiagramas concorrentes) ou múltiplos

estados de destino (normalmente de subdiagramas concorrentes)

„

Representa uma separação e/ou fusão de controlo em/de fios de

controlo concorrentes

„

Aplicável mesmo sem subdiagramas concorrentes

„

Desenha-se com uma barra forte (

barra de sincronização

):

Estado fonte 1 Estado fonte n ... Estado destino 1 Estado destino m ... ev1 evn

Eventos diferidos

„

Uma acção possível em resposta a um evento é “

defer

”,

que significa guardar o evento até chegar a um estado

capaz de o “consumir”

„

É aplicável num par “evento/acção” interno a um estado

„

Exemplo (máquina de fax):

A enviar fax chegada de fax/defer Repouso A receber faz enviar fax/defer chegada de fax enviar fax

(20)

39 UML – DIagramas de estados,

Descrição de eventos compostos

com diagramas de estados

„

Um

evento composto

corresponde a uma sequência de

eventos mais simples

• O instante da ocorrência do evento composto é o instante da

ocorrência do último evento da sequência

• Exemplo: o evento composto “introduzir número” é uma sequência

de uma ou mais ocorrências do evento “introduzir dígito”, seguido de

uma ocorrência do evento “enter”

„

Um evento composto pode ser definido através de um

diagrama de estados (máquina de estados) que funciona

como um “

detector de eventos

• Detector sequencial: a detecção do evento composto corresponde à

chegada a um estado final com o nome do evento

• Detector cíclico: o evento composto é sinalizado explicitamente,

podendo ser lançado vários vezes

Exemplo: Máquina de vendas (1)

Inactivo

moeda ( montante ) / põe balanço moeda(montante) / adiciona ao balanço

Recolhe dinheiro

do/ testa item e calcula troco [troco<0] escolhe(item)

[item vazio]

[troco=0] [troco>0]

do/ faz troco do/ entrega(item)

cancelar / devolve moedas Diagrama pincipal:

(21)

41 UML – DIagramas de estados,

Exemplo: Máquina de vendas (2)

do/ inicializa item do/ acrescenta dígito

limpa dígito(n)

aceita

escolhe(item) dígito(n)

Detalhe do evento composto “escolhe(item)”:

do/ move o braço para a fila correcta

do/ move o braço para

a coluna correcta do/ tira item daprateleira

braço

pronto braçopronto tirado

Detalhe da actividade “entrega(item)”:

Estados históricos (history states)

„

Estado histórico

(dentro de um estado composto) –

refere-se ao último subestado em que refere-se encontrava o estado

composto

„

Útil para reentrar num estado composto no subestado em

que se encontrava anteriormente

„

Não é aplicável na primeira entrada

B1 interrupt resume B2 H C estado histórico B A

(22)

43 UML – DIagramas de estados,

Resíduos de subestados (stubs)

„

Aplicáveis quando se escondem os detalhes de um estado

composto, mas há transições que o atravessam

A C W E B F p r u s t D q A C W B p r q D abstracção s

Exemplos e exercícios

(23)

45 UML – DIagramas de estados,

Exemplo: Rádio-despertador (a rever)

18:35

89.5 FM

minutos

horas

alarme

tempo

dormir

desligar

off radio alarme

vol

sintonia

‰ obter o diagrama de estados

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)

- Diagrama principal

Desligado

Funcionar

do/ radio activo

Despertador

radio

off

alarme

radio

Ruído

Estação

sintoniza(freq)

dessintoniza

Botão de sintonia

Cortado

Activo

ajusta(nível)/

alterar nível

ajusta(nível)/alterar nível

[nível=0]

Botão de volume

Hora actual

do/ mostra

hora actual

Hora despertar

do/ altera hora

despertar

botão alarme

carregado

botão alarme

livre

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

Interruptor

(24)

47 UML – DIagramas de estados,

- Subdiagrama Hora despertar

Mostra

do/ mostra

hora despertar

Põe minutos

do / incrementa

minutos despertar

mod 60

botão minutos

carregado

botão minutos

livre

Hora despertar

Põe horas

do/ incrementa

horas despertar

mod 24

botão horas

carregado

botão horas

livre

- Subdiagrama Hora actual

Mostra

do/ mostra

hora actual

Acerta minutos

do/ incrementa

minutos mod 60

botão minutos

carregado

botão minutos

livre

Hora actual

Acerta horas

do/ incrementa

horas mod 24

botão horas

carregado

botão horas

livre

Altera hora

do/ mostra

hora actual

botão tempo

(25)

49 UML – DIagramas de estados,

- Subdiagrama Despertador

Adormecer

do/ rádio activo

Latente

do/ 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

(26)

51 UML – DIagramas de estados,

Estados de uma Publicação

Disponível

Emprestada

mediante requisição aquisiç ão

consulta / incrementa contador

empréstimo devolução

Estados de um Sócio

Activo Inactivo Activo ins crição Inactivo renovação

whe n(esg otad o prazo da i nscrição e não tem exemplares emprestados) / avisa sócio

desistência

evento ocorre quando a condição se torna verdadeira

(27)

53 UML – DIagramas de estados,

Estados de uma Requisição

Espera devolução

Requisição Encerrada devolução

requi si ção[ pu blicação d ispon ível ] / empresta exemplar

esgotado prazo devolução / avisa

requ isi tante

Requisição Anulada Espera disponibilidade Espera levantamento Espera disponibilidade requisição[ publicação indisponível ] / coloca em lista de espera Espera levantamento publicação disponível / avisa requisitante desistência levantamento esgotado prazo levantamento / avisa requisitante

Sig nifica que o correu a devolução ou aquisição de u m exem plar ou que uma requisição à es pera de le vantam ento foi anul ada, na condição de não existi r outra requisição à espera de di spon ibi lidad e mais a ntiga do que esta

Prevê já vários exemplares por publicação e possibilidade de requisição ficar em lista de espera!

(28)

55 UML – DIagramas de estados,

Exercício 1: Sistema de portas

„

(ASI,10/2/99) Modele o funcionamento do seguinte sistema

de portas através de um diagrama de estados em UML:

• À entrada de um edifício existem duas portas: uma porta interior e

uma porta exterior

• Por razões de segurança, as duas portas não podem estar abertas

simultaneamente

• De ambos os lados (interior e exterior) de cada porta, há um botão

de abrir

• Quando se carrega no botão de abrir uma porta, se a outra porta

estiver trancada, a porta é destrancada durante 5 segundos,

permitindo a sua abertura manual

• As portas fecham-se por acção de molas e ficam imediatamente

trancadas

• Em cada porta há um sensor que detecta o seu fecho.

Exercício 2: Auto-rádio

„

(ASI 4/2/97) Modele o mecanismo a seguir descrito, através de um

diagrama de estados:

• Um auto-rádio tem um mecanismo anti-roubo baseado num código secreto com 4 dígitos. • O auto-rádio encaixa numa gaveta que é montada na viatura, e que permite a sua fácil

extracção. Quando se retira o auto-rádio da respectiva gaveta (cortando-lhe assim a alimentação), este fica num modo de “segurança”, que é também o modo inicial. • Quando se liga o auto-rádio (alimentação e interruptor), no modo de “segurança”, este

começa por exigir o código secreto, antes de entrar no modo de funcionamento normal. Para a introdução do código secreto, o auto-rádio dispõe de teclas correspondentes aos dígitos de “0” a “9” e uma tecla de “Enter”.

• Uma vez em modo de funcionamento normal, o simples desligar do interruptor, sem cortar a alimentação, não provoca a passagem ao modo de “segurança”; isto é, ao voltar a ligar o interruptor, este não exige a introdução do código secreto.

• No caso de o utilizador introduzir um código errado, dispõe de mais 2 tentativas. Ao fim de 3 tentativas falhadas (sem nenhuma tentativa bem sucedida pelo meio), o auto-rádio fica completamente bloqueado, só podendo ser desbloqueado na fábrica, mediante o mesmo código secreto. O número de tentativas falhadas é memorizado mesmo que se desligue o auto-rádio (interruptor e/ou alimentação).

(29)

57 UML – DIagramas de estados,

Exercício 3: Telefone de cartões

„

(ASI 3/4/98) Considere um telefone público de cartões que

funciona normalmente de acordo com o seguinte cenário:

• estando o telefone em repouso (auscultador poisado e mostrador desligado), o utilizador levanta o auscultador;

• aparece quase imediatamente no mostrador a mensagem “introduza cartão”; • o utilizador introduz o cartão na ranhura;

• aparece quase imediatamente no mostrador o número de períodos disponíveis no cartão;

• o utilizador digita o número pretendido (os dígitos aparecem imediatamente no mostrador e são imediatamente transmitidos para a central);

• passadas uma fracções de segundo ou escassos segundos após ter sido digitado o último dígito, o telefone emite um sinal sonoro indicando que o número pretendido está a ser chamado (sinal de chamada, proveniente da central); • o sinal de chamada pára, indicando que o número chamado atendeu; • decorre então a conversação (enquanto decorre a conversação, aparecem no

mostrador os períodos disponíveis no cartão, que são actualizados há medida que chegam os impulsos da central);

• (continua)

Exercício 3: Telefone de cartões

(cont.)

• o utilizador poisa o auscultador;

• o utilizador pressiona num botão para sair o cartão (só nesse momento é que desaparece do mostrador a indicação dos períodos disponíveis), e recolhe o cartão.

„

Considere ainda os seguintes modos de funcionamento

alternativos:

• No caso de pretender efectuar uma segunda chamada, o utilizador não precisa de retirar o cartão (isto é, não precisa de pressionar o botão para sair o cartão). Basta poisar o auscultador e voltar a levantá-lo.

• Passados 5 segundos desde que se poisa o auscultador, o cartão sai automaticamente.

• Se, no momento de taxar um impulso, o cartão já não tiver mais períodos disponíveis, a chamada é cortada automaticamente pelo telefone automático (surge então um sinal contínuo que desaparece quando se poisa o

auscultador).

„

Modele o funcionamento acima descrito através de um diagrama

(30)

59 UML – DIagramas de estados,

Exercício 4

„

Modele através de uma máquina de estados um programa

(tipo filtro Unix) que lê do standard input código fonte em

Java e escreve no standard output o mesmo código sem

comentários

• O programa deve ler e escrever caracter a caracter

• A chegada de um caracter c ao standard input deve ser modelada

como um evento input(c)

• O fim dos dados de entrada deve ser modelada pelo evento EOF

• A escrita de um caracter c no standard output deve ser modelada

pela acção output(c)

Exercício 4 - resolução

Normal Dentro de

string

Possível início de comentário outro ca racter c / o utpu t(c)

A seguir a '\' '"' / output('"')

'/'

outro caracter c / output(c )

caracter c / output(c) Dentro de comentário /* Dentro de comentário // outro caracter c Possível fim de comentário /* outro caracter c '*' Em todos o s outros estados, EOF salta simpl esmente para o f im '*' '/' o utro caracter c '\' / output('\') '" ' / out put('"') '/' '*' '"' / output('/'); output('"') outro caracter c / output('/'); output(c) EOF / output('/') '\n' / outpu t('\n')

Referências

Documentos relacionados

No fundo, o condicionamento clássico é o processo de aprendizagem que se baseia na associação de um estímulo condicionado e um estímulo natural, de modo a que o

■ Quanto maior for a velocidade do veículo, maior a transferência de energia e maior a probabilidade de que os ocupantes tenham lesões graves.. ■ Embora no impacto frontal

Universidade de São Paulo | Faculdade de Filosofia, Letras e Ciências Humanas | Departamento de Antropologia | São Paulo, SP, Brasil | scaiuby@usp.br

12. Einen-alle Titel wiederholen-Wiederholfunktion verlassen. “REPEAT” mehr als 3 Sekunden gedrückt halten, um zu den Werkseinstellungen zurück zu schalten. Umschalten in

Amortizações e Quotas de Exau * &#34; Ativo &#34; * Ativo Círcularrti Disponil3ilida&lt; Bancos Contas C Créditos Créditos AdíantamBtos Créditos Estoques Estoques (

Para compositores e arranjadores não violonistas a técnica da escrita violonística é inicialmente, sob determinados aspectos, algo misterioso.A multiplicidade de

Após concluir o processo de atualização e espacialização de todos os produtores de mudas cadastrados no RENASEM, foram contabilizados 310 viveiros no estado do Rio Grande do

 Em 2013, Dinamarca assume-se como o 16.º mercado emissor de hóspedes internacionais para estabelecimentos hoteleiros portugueses (quota de mercado de 1,1%), o 15.º em termos