00001 package plp.orientadaObjetos1.declaracao.procedimento; 00002 00003 import plp.orientadaObjetos1.comando.Procedimento; 00004 import plp.orientadaObjetos1.excecao.declaracao.ClasseJaDeclaradaException; 00005 import plp.orientadaObjetos1.excecao.declaracao.ClasseNaoDeclaradaException; 00006 import plp.orientadaObjetos1.excecao.declaracao.ProcedimentoJaDeclaradoException; 00007 import plp.orientadaObjetos1.excecao.declaracao.ProcedimentoNaoDeclaradoException; 00008 import plp.orientadaObjetos1.excecao.declaracao.VariavelJaDeclaradaException; 00009 import plp.orientadaObjetos1.excecao.declaracao.VariavelNaoDeclaradaException; 00010 import plp.orientadaObjetos1.expressao.leftExpression.Id; 00011 import plp.orientadaObjetos1.memoria.AmbienteCompilacao; 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 } 00034 00035 public DecProcedimentoComposta() { 00036 } 00037 00038 public void setCurrent(DecProcedimento declaracao1) { 00039 this.declaracao1 = declaracao1; 00040 } 00041 00042 public void setNext(DecProcedimento declaracao2) { 00043 this.declaracao2 = declaracao2; 00044 } 00045 00046 public DecProcedimento getNext() { 00047 return this.declaracao2; 00048 } 00049 00057 public Procedimento getProcedimento(Id id) throws ProcedimentoNaoDeclaradoException { 00058 Procedimento procedimento; 00059 try { 00060 procedimento = declaracao1.getProcedimento(id); 00061 } 00062 catch(ProcedimentoNaoDeclaradoException e) { 00063 procedimento = declaracao2.getProcedimento(id); 00064 } 00065 return procedimento; 00066 } 00075 public boolean checaTipo(AmbienteCompilacao ambiente) 00076 throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException, 00077 ProcedimentoJaDeclaradoException, ProcedimentoNaoDeclaradoException, 00078 ClasseNaoDeclaradaException,ClasseJaDeclaradaException{ 00079 return declaracao1.checaTipo(ambiente) && declaracao2.checaTipo(ambiente); 00080 } 00081 }