00001 package plp.orientadaObjetos1.expressao.leftExpression; 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.valor.Valor; 00007 import plp.orientadaObjetos1.memoria.AmbienteCompilacaoOO1; 00008 import plp.orientadaObjetos1.memoria.AmbienteExecucaoOO1; 00009 import plp.orientadaObjetos1.util.Tipo; 00010 00014 public class Id extends plp.expressions2.expression.Id implements LeftExpression{ //,IDominio{ 00015 00020 public Id(String strName) { 00021 super(strName); 00022 } 00028 public boolean equals(Object obj) { 00029 if (obj instanceof Id) { 00030 return ((Id) obj).getIdName().equals(this.getIdName()); 00031 } 00032 return false; 00033 } 00038 public String toString() { 00039 return this.getIdName(); 00040 } 00041 00051 public Valor avaliar(AmbienteExecucaoOO1 ambiente) 00052 throws VariavelJaDeclaradaException, ClasseNaoDeclaradaException, VariavelNaoDeclaradaException { 00053 return obterValorDeIdNoAmbiente(ambiente); 00054 } 00055 00065 public boolean checaTipo(AmbienteCompilacaoOO1 amb) throws VariavelNaoDeclaradaException { 00066 boolean result = true; 00067 amb.get(this); // verifica se está no ambiente 00068 return result; 00069 } 00070 00079 public Tipo getTipo(AmbienteCompilacaoOO1 amb) throws VariavelNaoDeclaradaException { 00080 return amb.get(this); 00081 } 00086 public Id getId(){ 00087 return this; 00088 } 00094 public int hashCode() { 00095 return this.getIdName().hashCode(); 00096 } 00097 00104 private Valor obterValorDeIdNoAmbiente(AmbienteExecucaoOO1 ambiente) 00105 throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException { 00106 return ambiente.get(this); 00107 } 00108 }