Main Page | Packages | Class Hierarchy | Class List | Directories | File List | Class Members | Related Pages

IfThenElse.java

Go to the documentation of this file.
00001 package plp.orientadaObjetos1.comando;
00002 
00003 import plp.orientadaObjetos1.excecao.comando.TryCatchException;
00004 import plp.orientadaObjetos1.excecao.declaracao.ClasseJaDeclaradaException;
00005 import plp.orientadaObjetos1.excecao.declaracao.ClasseNaoDeclaradaException;
00006 import plp.orientadaObjetos1.excecao.declaracao.ObjetoJaDeclaradoException;
00007 import plp.orientadaObjetos1.excecao.declaracao.ObjetoNaoDeclaradoException;
00008 import plp.orientadaObjetos1.excecao.declaracao.ProcedimentoJaDeclaradoException;
00009 import plp.orientadaObjetos1.excecao.declaracao.ProcedimentoNaoDeclaradoException;
00010 import plp.orientadaObjetos1.excecao.declaracao.VariavelJaDeclaradaException;
00011 import plp.orientadaObjetos1.excecao.declaracao.VariavelNaoDeclaradaException;
00012 import plp.orientadaObjetos1.excecao.execucao.EntradaInvalidaException;
00013 import plp.orientadaObjetos1.expressao.Expressao;
00014 import plp.orientadaObjetos1.expressao.valor.ValorBooleano;
00015 import plp.orientadaObjetos1.memoria.AmbienteCompilacao;
00016 import plp.orientadaObjetos1.memoria.AmbienteExecucao;
00017 import plp.orientadaObjetos1.util.TipoPrimitivo;
00018 
00022 public class IfThenElse implements Comando {
00026     private Expressao expressao;
00030     private Comando comandoThen;
00034     private Comando comandoElse;
00041     public IfThenElse (Expressao expressao, Comando comandoThen, Comando comandoElse){
00042         this.expressao = expressao;
00043         this.comandoThen = comandoThen;
00044         this.comandoElse = comandoElse;
00045     }
00046 
00053     public AmbienteExecucao executar(AmbienteExecucao ambiente)
00054         throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException,
00055                ProcedimentoNaoDeclaradoException, ProcedimentoJaDeclaradoException,
00056                ClasseJaDeclaradaException, ClasseNaoDeclaradaException,
00057                ObjetoJaDeclaradoException, ObjetoNaoDeclaradoException, EntradaInvalidaException, TryCatchException {
00058         ambiente.incrementa();
00059         boolean condicao = ((ValorBooleano)expressao.avaliar(ambiente)).valor(); 
00060         if ( condicao) {
00061             ambiente = comandoThen.executar(ambiente);
00062         }
00063         else {
00064             ambiente = comandoElse.executar(ambiente);
00065         } 
00066         ambiente.restaura();
00067         return ambiente;
00068     }
00069 
00077     public boolean checaTipo(AmbienteCompilacao ambiente)
00078         throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException,
00079                ProcedimentoNaoDeclaradoException, ProcedimentoJaDeclaradoException,
00080                ClasseJaDeclaradaException, ClasseNaoDeclaradaException {
00081         boolean checa = expressao.checaTipo(ambiente);
00082         checa = checa && ((TipoPrimitivo)expressao.getTipo(ambiente)).eBooleano();
00083         checa = checa && comandoThen.checaTipo(ambiente);
00084         checa = checa && comandoElse.checaTipo(ambiente);
00085         
00086         
00087         return  checa;
00088     }
00089 
00090 }

Generated on Mon Aug 8 20:20:46 2005 for Linguagem OO1 - Generics by  doxygen 1.4.4