package loo2.plp.orientadaObjetos1.declaracao.variavel; import loo2.plp.expressions2.memory.VariavelJaDeclaradaException; import loo2.plp.expressions2.memory.VariavelNaoDeclaradaException; import loo2.plp.orientadaObjetos1.declaracao.Declaracao; import loo2.plp.orientadaObjetos1.excecao.declaracao.ClasseJaDeclaradaException; import loo2.plp.orientadaObjetos1.excecao.declaracao.ClasseNaoDeclaradaException; import loo2.plp.orientadaObjetos1.excecao.declaracao.ObjetoJaDeclaradoException; import loo2.plp.orientadaObjetos1.excecao.declaracao.ObjetoNaoDeclaradoException; import loo2.plp.orientadaObjetos1.expressao.leftExpression.Id; import loo2.plp.orientadaObjetos1.memoria.AmbienteCompilacaoOO1; import loo2.plp.orientadaObjetos1.memoria.AmbienteExecucaoOO1; import loo2.plp.orientadaObjetos1.util.Tipo; /** * Interface representando uma declara��o de vari�vel. */ public interface DecVariavel extends Declaracao { /** * Retorna o tipo do identificador a ser declarado no AmbienteCompilacao * @param id o identificador da declaracao * @return o tipo do identificador */ public Tipo getTipo(Id id) throws VariavelNaoDeclaradaException ; /** * Cria um mapeamento do identificador para o valor da express�o * desta declara��o no AmbienteExecucao * @param ambiente o ambiente que contem o mapeamento entre identificadores * e valores. * @return o ambiente modificado pela inicializa��o da vari�vel. */ public AmbienteExecucaoOO1 elabora(AmbienteExecucaoOO1 ambiente) throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException, ClasseJaDeclaradaException, ClasseNaoDeclaradaException, ObjetoNaoDeclaradoException, ObjetoJaDeclaradoException ; /** * Verifica se a declara��o est� bem tipada, ou seja, se a * express�o de inicializa��o est� bem tipada. * @param ambiente o ambiente que contem o mapeamento entre identificadores * e seus tipos. * @return true se os tipos da declara��o s�o v�lidos; * false caso contrario. */ public boolean checaTipo(AmbienteCompilacaoOO1 ambiente) throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException, ClasseJaDeclaradaException, ClasseNaoDeclaradaException; }