Ti informaçao
Prof. Esp. Anderson Barbosa
Olá bom tarde, estou necessitando de uma solução para minhas máquinas de goma, o software deve ser construído em Java.
Atualmente existe as seguintes comportamentos no funcionamento da maquina: Recebeu Moeda, Sem Moeda, Goma
Vendida e Gomas Acabaram. No futuro pretendemos acrescentar outros comportamento, desta forma o projeto deve ser flexível e fácil para estas novas mudanças.
Estados da Máquina
1
13/08/2012
Ações
public class MaquinaGoma{ final static int SEM_GOMA = 0; final static int SEM_MOEDA = 1; final static int TEM_MOEDA = 2; final static int VENDIDO = 3; private int estado = SEM_GOMA; private int contadorGomas = 0; public MaquinaGoma(int quantidadeGoma){ this.contadorGomas = quantidadeGoma; if (contadorGomas > 0){ this.estado = SEM_MOEDA;
}
}
....
}
2
13/08/2012
public class MaquinaGoma{
....
public void inserirMoeda(){ if (estado == TEM_MOEDA){
System.out.println(“Você não pode inserir outra moeda”);
}
else if (estado == SEM_GOMA){
System.out.println(“Não existe goma na máquina, injeta moeda”);
}
else if (estado == VENDIDO){
System.out.println(“Por favor espere a sua goma sair, injeta moeda”);
}
else if (estado == SEM_MOEDA){ estado = TEM_MOEDA;
System.out.println(“Você inseriu uma moeda”);
}
}
....
}
Estados da Máquina
O padrão State permite que um objeto altere o seu comportamento quando o seu estado interno muda. O objeto parecerá ter mudado de classe.
3
13/08/2012
public class MaquinaGoma{ private StateInterface semGoma; private StateInterface semMoeda; private StateInterface temMoeda; private StateInterface vendido; private StateInterface vencedor;
StateInterface estado = semGoma; private int contadorGomas = 0; public MaquinaGoma(int quantidadeGoma){ semGoma = new SemGomaState(); temGoma = new SemGomaState(); semMoeda = new SemMoedaState(); vendido = new VendidoState(); vencedor = new VencedorState();