Upload
flower
View
39
Download
11
Embed Size (px)
DESCRIPTION
Modelos dinâmicos OMT Exercício do elevador. Gabriel David FEUP - Rua dos Bragas, 4099 Porto Codex - PORTUGAL Tel. 351-2-2041842 - Fax: 351-2-319280. Email: [email protected] URL: http://www.fe.up.pt. Especificação. - PowerPoint PPT Presentation
Citation preview
1
Gabriel DavidFEUP - Rua dos Bragas, 4099 Porto Codex - PORTUGALTel. 351-2-2041842 - Fax: 351-2-319280
Email: [email protected]: http://www.fe.up.pt
Modelos dinâmicos OMT
Exercício do elevador
Elevador - 2
Objectivo: elaborar um modelo dinâmico que descreva o funcionamento de um elevador.
Pretende-se um diagrama de estados para a classe Elevador cujo diagrama de objectos está na figura.
O elevador tem comandos para descer e para subir, em cada andar excepto nos terminais, onde só tem um.
Tem memorização dos destinos dos vários passageiros numa viagem e das chamadas para um andar
Considera-se que não há porta interior, mas apenas portas manuais nos andares
Em descanso, a luz apaga ao fim de algum tempo
Especificação
Elevador - 3
Diagrama de classe
Elevadoractual: integer
pedidosSubir: set of integer
pedidosDescer: set of integer
destinos: set of integer
actualiza(andar: integer)
limpaPedidosDestinos()
apagaLuz()
acendeLuz()
Eventos abrePorta fechaPorta atinge( andar ) botãoPremido( tipo, andar ) topo fundo
Elevador - 4
ADescer
PortaAbertaS
PáraDescida
PortaAbertaD
PáraSubida
ASubir
Diagrama de estados
Descanso botãoPremido(tipo,andar) [actual<andar]
atinge(andar)[andar pedidosSubir destinos {termo}]/actualiza(andar), iniciaTempo, limpa(subir, andar)
atinge(andar)[andar pedidosSubir destinos {termo}]/actualiza(andar)
tempoEsgotado [actual < termo]
tempoEsgotado[botões=]
abrePorta
fechaPorta/anulaTempo
tempoEsgotado[botões actual=termo]/põeTermo(desce)
atinge(andar)[andar pedidosDescer destinos {termo}]/actualiza(andar)
atinge(andar)[andar pedidosDescer destinos {termo}]/actualiza(andar), iniciaTempo, limpa(descer, andar)
tempoEsgotado [actual > termo]
tempoEsgotado[botões actual=termo]/põeTermo(sobe)
abrePortafechaPorta/anulaTempo
entry/apagaLuz
exit/ligaLuz
Parado
botãoPremido(tipo,andar) [actual>andar]
Elevador - 5
Notas ao diagrama
Difícil o equilíbrio entre valores em atributos e número de estados
• notem a ausência de atributo direcção e dois conjuntos de estados, um para subir e outro para descer
• a actualização do atributo termo tem que respeitar as condições de ser sempre o máximo (mínimo) dos botões premidos durante a subida (descida), não podendo ultrapassar o extremo
“truque” - evento fechaPorta põe a zero o atraso para forçar indirectamente o evento fimDeEspera
existe um super-estado com uma transição robustez (tolerância a falhas)
• incluir eventos a assinalar os extremos e a fazer transições para os estados de paragem opostos, com as respectivas limpezas de dados
• introduz redundância, pois não existe nenhuma sequência de eventos válida que pudesse levar à tentativa de ultrapassar um extremo
Elevador - 6
Redução de estados
Descanso
Mover
ParadoPortaAberta
botãoPremido/põeTermo
atinge(andar)[andar paragens(direcção) {termo}]/actualiza(andar), iniciaTempo, limpa(andar)
tempoEsgotado [actual termo]
tempoEsgotado [botões=]
abrePorta
fechaPorta/anulaTempo
tempoEsgotado[botões actual=termo]/inverte,põeTermo
atinge(andar)[andar paragens(direcção) {termo}]/actualiza(andar)