6
1 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 Modelos dinâmicos OMT Exercício do elevador

Modelos dinâmicos OMT Exercício do elevador

  • 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

Page 1: Modelos dinâmicos OMT Exercício do elevador

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

Page 2: 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

Page 3: Modelos dinâmicos OMT Exercício do elevador

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

Page 4: Modelos dinâmicos OMT Exercício do elevador

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]

Page 5: Modelos dinâmicos OMT Exercício do elevador

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

Page 6: Modelos dinâmicos OMT Exercício do elevador

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)