00001 package plp.orientadaObjetos1.expressao.leftExpression; 00002 00003 import plp.orientadaObjetos1.excecao.declaracao.VariavelNaoDeclaradaException; 00004 import plp.orientadaObjetos1.expressao.valor.Valor; 00005 import plp.orientadaObjetos1.memoria.AmbienteCompilacao; 00006 import plp.orientadaObjetos1.memoria.AmbienteExecucao; 00007 import plp.orientadaObjetos1.util.Tipo; 00008 00012 public class Id implements LeftExpression{ //,IDominio{ 00016 private String idName; 00021 public Id(String strName) { 00022 idName = strName; 00023 } 00029 public boolean equals(Object obj) { 00030 boolean resposta = false; 00031 if (obj instanceof Id) { 00032 resposta = ((Id) obj).idName.equals(this.idName); 00033 } 00034 return resposta; 00035 } 00040 public String toString() { 00041 return idName; 00042 } 00043 00052 public Valor avaliar(AmbienteExecucao ambiente) 00053 throws VariavelNaoDeclaradaException { 00054 return obterValorDeIdNoAmbiente(ambiente); 00055 } 00056 00065 public boolean checaTipo(AmbienteCompilacao amb) 00066 throws VariavelNaoDeclaradaException { 00067 boolean result = true; 00068 amb.getTipo(this); // verifica se está no ambiente 00069 return result; 00070 } 00071 00079 public Tipo getTipo(AmbienteCompilacao amb) 00080 throws VariavelNaoDeclaradaException { 00081 return amb.getTipo(this); 00082 } 00087 public Id getId(){ 00088 return this; 00089 } 00095 public int hashCode() { 00096 return idName.hashCode(); 00097 } 00098 00104 private Valor obterValorDeIdNoAmbiente(AmbienteExecucao ambiente) 00105 throws VariavelNaoDeclaradaException { 00106 return (Valor)ambiente.getValor(this); 00107 } 00108 }