IfThenElse.java

Go to the documentation of this file.
00001 package plp.orientadaObjetos1.comando;
00002 
00003 import plp.expressions2.memory.VariavelJaDeclaradaException;
00004 import plp.expressions2.memory.VariavelNaoDeclaradaException;
00005 import plp.orientadaObjetos1.excecao.declaracao.ClasseJaDeclaradaException;
00006 import plp.orientadaObjetos1.excecao.declaracao.ClasseNaoDeclaradaException;
00007 import plp.orientadaObjetos1.excecao.declaracao.ObjetoJaDeclaradoException;
00008 import plp.orientadaObjetos1.excecao.declaracao.ObjetoNaoDeclaradoException;
00009 import plp.orientadaObjetos1.excecao.declaracao.ProcedimentoJaDeclaradoException;
00010 import plp.orientadaObjetos1.excecao.declaracao.ProcedimentoNaoDeclaradoException;
00011 import plp.orientadaObjetos1.excecao.execucao.EntradaInvalidaException;
00012 import plp.orientadaObjetos1.expressao.Expressao;
00013 import plp.orientadaObjetos1.expressao.valor.ValorBooleano;
00014 import plp.orientadaObjetos1.memoria.AmbienteCompilacaoOO1;
00015 import plp.orientadaObjetos1.memoria.AmbienteExecucaoOO1;
00016 import plp.orientadaObjetos1.util.TipoPrimitivo;
00017 
00021 public class IfThenElse implements Comando {
00025     private Expressao expressao;
00029     private Comando comandoThen;
00033     private Comando comandoElse;
00040     public IfThenElse (Expressao expressao, Comando comandoThen, Comando comandoElse){
00041         this.expressao = expressao;
00042         this.comandoThen = comandoThen;
00043         this.comandoElse = comandoElse;
00044     }
00045 
00052     public AmbienteExecucaoOO1 executar(AmbienteExecucaoOO1 ambiente)
00053         throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException,
00054                ProcedimentoNaoDeclaradoException, ProcedimentoJaDeclaradoException,
00055                ClasseJaDeclaradaException, ClasseNaoDeclaradaException,
00056                ObjetoJaDeclaradoException, ObjetoNaoDeclaradoException, EntradaInvalidaException {
00057         if ( ((ValorBooleano)expressao.avaliar(ambiente)).valor() )
00058             return comandoThen.executar(ambiente);
00059         else return comandoElse.executar(ambiente);
00060     }
00061 
00069     public boolean checaTipo(AmbienteCompilacaoOO1 ambiente)
00070         throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException,
00071                ProcedimentoNaoDeclaradoException, ProcedimentoJaDeclaradoException,
00072                ClasseJaDeclaradaException, ClasseNaoDeclaradaException {
00073         return expressao.checaTipo(ambiente) &&
00074                ((TipoPrimitivo)expressao.getTipo(ambiente)).eBooleano() &&
00075                comandoThen.checaTipo(ambiente) &&
00076                comandoElse.checaTipo(ambiente);
00077     }
00078 
00079 }

Generated on Tue Sep 12 21:52:03 2006 for PLP by  doxygen 1.4.7