INF1013 – Modelagem de Software
Prof. Ivan Mathias Filho
Exercício de Modelagem de Estados
Um relógio digital simples tem um visor e dois botões para ajustá-lo: o botão A e o
botão B. Além disso, o relógio em questão possui três modos de operação:
1. Modo de Exibição
2. Modo de Ajuste de Horas
3. Modo de Ajuste de Minutos
No Modo de Exibição, as horas e os minutos são mostrados separadamente através de
dois pontos. Quando o relógio for ligado, o mostrador deverá exibir 00:00. Os modos
restantes são utilizados para o ajuste das horas e dos minutos, respectivamente.
O botão A é usado para selecionar os modos. Isto é, a cada vez que ele é pressionado
os modos avançam na seguinte sequência: Exibição, Ajuste de Horas e Ajuste de
Minutos, retornando para o início da sequência após o último modo.
O botão B só produz efeito quando o relógio estiver nos modos de Ajuste de Horas ou
Ajuste de Minutos. Nesses modos, as horas, ou os minutos, são acrescidos de uma
unidade a cada vez que o botão B for pressionado. Um aspecto relevante é que
quando um botão for pressionado o evento gerado só irá surtir efeito se o outro não
estiver sendo pressionado.
Você deve construir um diagrama de estados que modele o comportamento de um
relógio como o descrito acima. Utilize as operações e os atributos da classe abaixo
para definir os eventos, as ações e as condições de guarda da sua máquina de
estados.
As operações da classe Relogio possuem as seguintes semânticas:
•
•
•
APressed( ) – esta operação será ativada quando o botão A for pressionado. O
efeito colateral da execução desta operação é alterar o valor do atributo a para
true.
BPressed( ) – esta operação será ativada quando o botão B for pressionado. O
efeito colateral da execução desta operação é alterar o valor do atributo b para
true.
AReleased( ) – esta operação será ativada quando o botão A for solto. O efeito
colateral da execução desta operação é alterar o valor do atributo a para false.
INF1013 – Modelagem de Software
Prof. Ivan Mathias Filho
Exercício de Modelagem de Estados
•
BReleased( ) – esta operação será ativada quando o botão B for solto. O efeito
colateral da execução desta operação é alterar o valor do atributo b para false.
Os atributos hora e minuto contêm, respectivamente, os valores das horas e dos
minutos que são exibidos no visor do relógio. Estes atributos devem ser incrementados
de acordo com as regras descritas anteriormente.
Download

Exercício 3