DecVariavelObjeto.java

Go to the documentation of this file.
00001 package plp.orientadaObjetos1.declaracao.variavel;
00002 
00003 import plp.expressions2.memory.VariavelJaDeclaradaException;
00004 import plp.expressions2.memory.VariavelNaoDeclaradaException;
00005 import plp.orientadaObjetos1.comando.New;
00006 import plp.orientadaObjetos1.excecao.declaracao.ClasseJaDeclaradaException;
00007 import plp.orientadaObjetos1.excecao.declaracao.ClasseNaoDeclaradaException;
00008 import plp.orientadaObjetos1.excecao.declaracao.ObjetoJaDeclaradoException;
00009 import plp.orientadaObjetos1.excecao.declaracao.ObjetoNaoDeclaradoException;
00010 import plp.orientadaObjetos1.expressao.leftExpression.Id;
00011 import plp.orientadaObjetos1.expressao.valor.ValorNull;
00012 import plp.orientadaObjetos1.memoria.AmbienteCompilacaoOO1;
00013 import plp.orientadaObjetos1.memoria.AmbienteExecucaoOO1;
00014 import plp.orientadaObjetos1.util.Tipo;
00015 import plp.orientadaObjetos1.util.TipoClasse;
00016 
00020 public class DecVariavelObjeto implements DecVariavel{
00024     private Tipo tipo;
00028     private Id objeto;
00032     private Id classe;
00039     public DecVariavelObjeto(Tipo tipo, Id objeto, Id classe){
00040         this.tipo = tipo;
00041         this.objeto = objeto;
00042         this.classe = classe;
00043     }
00044 
00050     public Tipo getTipo(Id id) throws VariavelNaoDeclaradaException{
00051         if(this.objeto.equals(id)){
00052             return tipo;
00053         }
00054         else {
00055             throw new VariavelNaoDeclaradaException(id);
00056         }
00057     }
00058 
00066     public AmbienteExecucaoOO1 elabora(AmbienteExecucaoOO1 ambiente)
00067         throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException,
00068                ClasseJaDeclaradaException, ClasseNaoDeclaradaException,
00069                ObjetoJaDeclaradoException, ObjetoNaoDeclaradoException{
00070         AmbienteExecucaoOO1 aux =  new SimplesDecVariavel(tipo, objeto, new ValorNull()).elabora(ambiente);
00071         aux = new New(objeto, classe).executar(aux);
00072         return aux;
00073     }
00074 
00084     public boolean checaTipo(AmbienteCompilacaoOO1 ambiente)
00085         throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException,
00086                ClasseJaDeclaradaException, ClasseNaoDeclaradaException{
00087         boolean resposta = false;
00088         TipoClasse tpClasse = new TipoClasse(classe);
00089         if ( tpClasse.eValido(ambiente) && tipo.eValido(ambiente) ) {
00090             resposta = tpClasse.equals(tipo);
00091             ambiente.map(objeto, tpClasse);
00092         }
00093         return resposta;
00094   }
00095 }

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