DecClasseSimples.java

Go to the documentation of this file.
00001 package plp.orientadaObjetos1.declaracao.classe;
00002 
00003 import plp.expressions2.memory.VariavelJaDeclaradaException;
00004 import plp.expressions2.memory.VariavelNaoDeclaradaException;
00005 import plp.orientadaObjetos1.declaracao.procedimento.DecProcedimento;
00006 import plp.orientadaObjetos1.declaracao.variavel.DecVariavel;
00007 import plp.orientadaObjetos1.excecao.declaracao.ClasseJaDeclaradaException;
00008 import plp.orientadaObjetos1.excecao.declaracao.ClasseNaoDeclaradaException;
00009 import plp.orientadaObjetos1.excecao.declaracao.ProcedimentoJaDeclaradoException;
00010 import plp.orientadaObjetos1.excecao.declaracao.ProcedimentoNaoDeclaradoException;
00011 import plp.orientadaObjetos1.expressao.leftExpression.Id;
00012 import plp.orientadaObjetos1.memoria.AmbienteCompilacaoOO1;
00013 import plp.orientadaObjetos1.memoria.AmbienteExecucaoOO1;
00014 import plp.orientadaObjetos1.memoria.DefClasse;
00015 import plp.orientadaObjetos1.util.TipoClasse;
00019 public class DecClasseSimples implements DecClasse {
00023     private Id nomeClasse;
00027     private DecVariavel atributos;
00031     private DecProcedimento metodos;
00038     public  DecClasseSimples(Id nomeClasse, DecVariavel atributos, DecProcedimento metodos){
00039         this.nomeClasse = nomeClasse;
00040         this.atributos = atributos;
00041         this.metodos = metodos;
00042     }
00043 
00050     public AmbienteExecucaoOO1 elabora(AmbienteExecucaoOO1 ambiente)
00051         throws ClasseJaDeclaradaException, ClasseNaoDeclaradaException {
00052 
00053         ambiente.mapDefClasse(nomeClasse, new DefClasse(atributos,metodos));
00054         return ambiente;
00055     }
00064     public boolean checaTipo(AmbienteCompilacaoOO1 ambiente)
00065         throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException,
00066                ClasseJaDeclaradaException, ClasseNaoDeclaradaException,
00067                ProcedimentoNaoDeclaradoException, ProcedimentoJaDeclaradoException {
00068 
00069         ambiente.mapDefClasse(nomeClasse, new DefClasse(atributos,metodos));
00070         boolean resposta = false;
00071         ambiente.incrementa();
00072         if (atributos.checaTipo(ambiente)){
00073             ambiente.map(new Id("this"), new TipoClasse(nomeClasse));
00074             resposta =  metodos.checaTipo(ambiente);
00075         }
00076         ambiente.restaura();
00077         return resposta;
00078     }
00079 }

Generated on Tue Sep 12 21:52:07 2006 for PLP by  doxygen 1.4.7