00001 package plp.orientadaObjetos1.declaracao.procedimento; 00002 00003 import plp.expressions2.memory.VariavelJaDeclaradaException; 00004 import plp.expressions2.memory.VariavelNaoDeclaradaException; 00005 import plp.orientadaObjetos1.comando.Procedimento; 00006 import plp.orientadaObjetos1.excecao.declaracao.ClasseJaDeclaradaException; 00007 import plp.orientadaObjetos1.excecao.declaracao.ClasseNaoDeclaradaException; 00008 import plp.orientadaObjetos1.excecao.declaracao.ProcedimentoJaDeclaradoException; 00009 import plp.orientadaObjetos1.excecao.declaracao.ProcedimentoNaoDeclaradoException; 00010 import plp.orientadaObjetos1.expressao.leftExpression.Id; 00011 import plp.orientadaObjetos1.memoria.AmbienteCompilacaoOO1; 00012 00016 public class DecProcedimentoComposta implements DecProcedimento{ 00020 private DecProcedimento declaracao1; 00024 private DecProcedimento declaracao2; 00030 public DecProcedimentoComposta(DecProcedimento declaracao1, DecProcedimento declaracao2){ 00031 this.declaracao1 = declaracao1; 00032 this.declaracao2 = declaracao2; 00033 } 00041 public Procedimento getProcedimento(Id id) throws ProcedimentoNaoDeclaradoException { 00042 Procedimento procedimento; 00043 try { 00044 procedimento = declaracao1.getProcedimento(id); 00045 } 00046 catch(ProcedimentoNaoDeclaradoException e) { 00047 procedimento = declaracao2.getProcedimento(id); 00048 } 00049 return procedimento; 00050 } 00059 public boolean checaTipo(AmbienteCompilacaoOO1 ambiente) 00060 throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException, 00061 ProcedimentoJaDeclaradoException, ProcedimentoNaoDeclaradoException, 00062 ClasseNaoDeclaradaException,ClasseJaDeclaradaException{ 00063 return declaracao1.checaTipo(ambiente) && declaracao2.checaTipo(ambiente); 00064 } 00065 }