00001 package plp.orientadaObjetos1.expressao; 00002 00003 import plp.expressions2.memory.VariavelJaDeclaradaException; 00004 import plp.expressions2.memory.VariavelNaoDeclaradaException; 00005 import plp.orientadaObjetos1.excecao.declaracao.ClasseNaoDeclaradaException; 00006 import plp.orientadaObjetos1.expressao.leftExpression.Id; 00007 import plp.orientadaObjetos1.expressao.valor.Valor; 00008 import plp.orientadaObjetos1.memoria.AmbienteCompilacaoOO1; 00009 import plp.orientadaObjetos1.memoria.AmbienteExecucaoOO1; 00010 import plp.orientadaObjetos1.util.Tipo; 00011 00015 public class This implements Expressao{ 00026 public Valor avaliar(AmbienteExecucaoOO1 ambiente) 00027 throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException, ClasseNaoDeclaradaException{ 00028 return obterValorDoObjetoThisNoAmbiente(ambiente); 00029 } 00039 public boolean checaTipo(AmbienteCompilacaoOO1 ambiente) 00040 throws VariavelNaoDeclaradaException{ 00041 //Como sempre há uma classe instanciada em orientacao a objeto 00042 //o checaTipo() de this retorna true 00043 return true; 00044 } 00053 public Tipo getTipo(AmbienteCompilacaoOO1 ambiente) 00054 throws VariavelNaoDeclaradaException{ 00055 return ambiente.get(new Id("this")); 00056 } 00057 00063 private Valor obterValorDoObjetoThisNoAmbiente(AmbienteExecucaoOO1 ambiente) 00064 throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException { 00065 return ambiente.get(new Id("this")); 00066 } 00067 }