00001 package plp.orientadaObjetos1.comando; 00002 00003 import plp.expressions2.memory.VariavelJaDeclaradaException; 00004 import plp.expressions2.memory.VariavelNaoDeclaradaException; 00005 import plp.orientadaObjetos1.excecao.execucao.EntradaInvalidaException; 00006 import plp.orientadaObjetos1.expressao.leftExpression.Id; 00007 import plp.orientadaObjetos1.memoria.AmbienteCompilacaoOO1; 00008 import plp.orientadaObjetos1.memoria.AmbienteExecucaoOO1; 00009 import plp.orientadaObjetos1.util.Tipo; 00010 00014 public class Read implements IO{ 00018 private Id id; 00022 private Tipo tipoId; 00027 public Read ( Id id){ 00028 this.id = id; 00029 } 00030 00038 public AmbienteExecucaoOO1 executar(AmbienteExecucaoOO1 ambiente) 00039 throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException, EntradaInvalidaException { 00040 ambiente.changeValor(id, ambiente.read(this.tipoId)); 00041 return ambiente; 00042 } 00043 00050 public boolean checaTipo(AmbienteCompilacaoOO1 ambiente) 00051 throws VariavelNaoDeclaradaException { 00052 // Alteramos a implementação, pois em tempo de compilação não se pode saber 00053 // o tipo da entrada que será lida. 00054 00055 // Tipo tipo = ambiente.getTipoEntrada(); 00056 // Tipo tipo2 = id.getTipo(ambiente); 00057 00058 this.tipoId = id.getTipo(ambiente); 00059 return id.checaTipo(ambiente); 00060 00061 //return id.getTipo(ambiente).equals(ambiente.getTipoEntrada()); 00062 } 00063 00064 }