package loo1.plp.orientadaObjetos1.declaracao.procedimento; import loo1.plp.expressions2.memory.VariavelJaDeclaradaException; import loo1.plp.expressions2.memory.VariavelNaoDeclaradaException; import loo1.plp.orientadaObjetos1.comando.Procedimento; import loo1.plp.orientadaObjetos1.excecao.declaracao.ClasseJaDeclaradaException; import loo1.plp.orientadaObjetos1.excecao.declaracao.ClasseNaoDeclaradaException; import loo1.plp.orientadaObjetos1.excecao.declaracao.ProcedimentoJaDeclaradoException; import loo1.plp.orientadaObjetos1.excecao.declaracao.ProcedimentoNaoDeclaradoException; import loo1.plp.orientadaObjetos1.expressao.leftExpression.Id; import loo1.plp.orientadaObjetos1.memoria.AmbienteCompilacaoOO1; /** * Interface que representa uma declara��o de Procedimento. */ public interface DecProcedimento { /** * Retorna o procedimento a ser declarado na Declara��o da Classe * @param id o identificador da declaracao de procedimento * @return o procedimento da declara��o */ public Procedimento getProcedimento(Id nomeProcedimento) throws ProcedimentoNaoDeclaradoException; /** * 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 VariavelJaDeclaradaException, VariavelNaoDeclaradaException, ProcedimentoJaDeclaradoException, ProcedimentoNaoDeclaradoException, ClasseNaoDeclaradaException,ClasseJaDeclaradaException; }