MaquinaDeEstadosMicroondas

MaquinaDeEstadosMicroondas


DisciplinaModelagem de Software19 materiais214 seguidores
Pré-visualização4 páginas
public class TratadorBotaoControle implements ActionListener {
 private JButton botaoAcao;
 private Microondas microondas;
 public TratadorBotaoControle(JButton botaoAcao, Microondas microondas) {
 this.botaoAcao = botaoAcao;
 this.microondas = microondas;
 }
 public void actionPerformed(ActionEvent e) {
 String labelBotao = botaoAcao.getText();
 if (labelBotao.equals("OPEN")) {
 microondas.open();
 } else if (labelBotao.equals("CLOSE")) {
 microondas.close();
 } else if (labelBotao.equals("START")) {
 microondas.start();
 } else if (labelBotao.equals("PAUSE")) {
 microondas.pause();
 }
 }
}
Trab3/src/controle/TratadorBotaoNumeros.java
package controle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JTextArea;
import modelo.Microondas;
public class TratadorBotaoNumeros implements ActionListener {
 private JTextArea visorMinutos;
 private JTextArea visorSegundos;
 private JButton botao;
 private Microondas microondas;
 public TratadorBotaoNumeros(Microondas microondas, JTextArea visorMinutos, JTextArea visorSegundos, JButton botao) {
 this.visorMinutos = visorMinutos;
 this.visorSegundos = visorSegundos;
 this.botao = botao;
 this.microondas = microondas;
 }
 public void actionPerformed(ActionEvent e) {
 String charNumero = botao.getText();
 int numero = Integer.parseInt(charNumero);
 
 if (Validador.validarTamanhoMaximo(visorMinutos, 2)) {
 atualizarVisor(visorMinutos, numero);
 }
 else if (Validador.validarTamanhoMaximo(visorSegundos, 2)){
 if(atualizarVisor(visorSegundos, numero) && Validador.validarUltimoDigito(visorSegundos, 2)){
 try {
 	int minutos = Integer.parseInt(visorMinutos.getText());
 	int segundos = Integer.parseInt(visorSegundos.getText());
 	if(minutos > 0 || segundos > 0)
 		microondas.setTime(minutos, segundos);
 } catch (NumberFormatException ex) {
 } 
 }
 }
 }
	private boolean atualizarVisor(JTextArea visor, int numero) {
		visor.setText(visor.getText() + Integer.toString(numero));
		if (!Validador.validarTempo(visor)) {
		 visor.setText("");
		 return false;
		}
		return true;
	}
}
Trab3/src/controle/Validador.java
package controle;
import javax.swing.JTextArea;
public final class Validador {
 private Validador() {
 }
 public static boolean validarTamanhoMaximo(JTextArea visor, int tamanhoMaximo) {
 if (visor.getText().length() < tamanhoMaximo) {
 return true;
 }
 return false;
 }
 public static boolean validarTempo(JTextArea visor) {
 int tempo = Integer.parseInt(visor.getText());
 if (tempo <= 59) {
 return true;
 }
 return false;
 }
 
 public static boolean validarUltimoDigito(JTextArea visor, int tamanhoMaximo) {
 if (visor.getText().length() == tamanhoMaximo) {
 return true;
 }
 return false;
 }
}
Trab3/src/modelo/Aquecendo.java
package modelo;
public class Aquecendo extends MicroondasState{
	
 public MicroondasState pause() {
 	microondas.stopTimer();
 return new ParadoComPortaFechada();
 }
 public MicroondasState open() {
 	microondas.stopTimer();
 return new ParadoComPortaAberta();
 }
 public MicroondasState timeOver() {
 return new EmEspera();
 }
}
Trab3/src/modelo/EmEspera.java
package modelo;
public class EmEspera extends MicroondasState {
 
 public MicroondasState setTime(int minutos, int segundos){
 	
 	microondas.setMinutos(minutos);
 	microondas.setSegundos(segundos);
 	
 	if(microondas.getPortaFechada())
 		return new ParadoComPortaFechada();
 	
 	return new ParadoComPortaAberta();
 }
}
Trab3/src/modelo/Microondas.java
package modelo;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Observable;
import javax.swing.Timer;
public class Microondas extends Observable implements ActionListener {
 private int minutos;
 private int segundos;
 private boolean portaFechada;
 private Timer timer;
 private MicroondasState estadoMicroondas;
 public Microondas() {
 minutos = 0;
 segundos = 0;
 portaFechada = true;
 timer = new Timer(1000, this);
 estadoMicroondas = MicroondasState.getInitialState(this);
 }
 
 public void actionPerformed(ActionEvent e) {
 	if(estadoMicroondas instanceof Aquecendo)
 		decrementarTempo();
 }
 
 public void setTime(int minutos, int segundos) {
 	estadoMicroondas = estadoMicroondas.setTime(minutos, segundos);
 setChanged();
 notifyObservers(estadoMicroondas);
 }
 public void start() {
 estadoMicroondas = estadoMicroondas.start();
 setChanged();
 notifyObservers(estadoMicroondas);
 }
 
 public void open() {
 	portaFechada = false;
 	estadoMicroondas = estadoMicroondas.open();
 setChanged();
 notifyObservers(estadoMicroondas);
 }
 
 public void close() {
 	portaFechada = true;
 	estadoMicroondas = estadoMicroondas.close();
 setChanged();
 notifyObservers(estadoMicroondas);
 }
 
 public void pause() {
 	estadoMicroondas = estadoMicroondas.pause();
 setChanged();
 notifyObservers(estadoMicroondas);
 }
 
 public void decrementarTempo() {
 if (segundos == 0 && minutos > 0) {
 minutos--;
 segundos = 59;
 } else if (segundos > 0){
 segundos--;
 }
 if (minutos == 0 && segundos == 0) {
 estadoMicroondas = estadoMicroondas.timeOver();
 }
 setChanged();
 notifyObservers(estadoMicroondas);
 }
 public int getMinutos() {
 return minutos;
 }
 void setMinutos(int minutos) {
 this.minutos = minutos;
 }
 public int getSegundos() {
 return segundos;
 }
 void setSegundos(int segundos) {
 this.segundos = segundos;
 }
 
 public boolean getPortaFechada() {
 return portaFechada;
 }
 void setPortaFechada(boolean portaFechada) {
 this.portaFechada = portaFechada;
 }
 
 void startTime() {
 	timer.start();
 }
 
 void stopTimer(){
 	timer.stop();
 }
}
Trab3/src/modelo/MicroondasState.java
package modelo;
public abstract class MicroondasState {
	
	protected static Microondas microondas;
	
	public static MicroondasState getInitialState(Microondas m) {
		microondas = m;
		return new EmEspera();
	}
 public MicroondasState pause() {
 	return this;
 }
 public MicroondasState open() {
 	return this;
 }
 public MicroondasState timeOver() {
 	return this;
 }
 public MicroondasState start() {
 	return this;
 }
 
 public MicroondasState close() {
 	return this;
 }
 
 public MicroondasState setTime(int minutos, int segundos) {
 	return this;
 }
 
}
Trab3/src/modelo/ParadoComPortaAberta.java
package modelo;
public class ParadoComPortaAberta extends MicroondasState{
 public MicroondasState pause() {
 	microondas.stopTimer();
 	microondas.setMinutos(0);
 	microondas.setSegundos(0);
 return new EmEspera();
 }
 public MicroondasState close() {
 return new ParadoComPortaFechada();
 }
}
Trab3/src/modelo/ParadoComPortaFechada.java