Main Page | Packages | Class Hierarchy | Class List | Directories | File List | Class Members | Related Pages

DecClasseGeneric.java

Go to the documentation of this file.
00001 package plp.orientadaObjetos1.declaracao.classe;
00002 
00003 import plp.orientadaObjetos1.declaracao.procedimento.DecProcedimento;
00004 import plp.orientadaObjetos1.declaracao.variavel.DecVariavel;
00005 import plp.orientadaObjetos1.excecao.declaracao.ClasseJaDeclaradaException;
00006 import plp.orientadaObjetos1.excecao.declaracao.ClasseNaoDeclaradaException;
00007 import plp.orientadaObjetos1.excecao.declaracao.ProcedimentoJaDeclaradoException;
00008 import plp.orientadaObjetos1.excecao.declaracao.ProcedimentoNaoDeclaradoException;
00009 import plp.orientadaObjetos1.excecao.declaracao.VariavelJaDeclaradaException;
00010 import plp.orientadaObjetos1.excecao.declaracao.VariavelNaoDeclaradaException;
00011 import plp.orientadaObjetos1.expressao.leftExpression.Id;
00012 import plp.orientadaObjetos1.memoria.AmbienteCompilacao;
00013 import plp.orientadaObjetos1.memoria.AmbienteExecucao;
00014 import plp.orientadaObjetos1.memoria.DefClasseGenerica;
00015 import plp.orientadaObjetos1.util.Tipo;
00016 import plp.orientadaObjetos1.util.TipoClasseGeneric;
00017 
00018 
00019 public class DecClasseGeneric extends DecClasseSimples {
00020     
00021     private Tipo tipoGenerico;
00022 
00023     public DecClasseGeneric(Id nomeClasse, DecVariavel atributos, DecProcedimento metodos, Tipo tipoGenerico) {
00024         super(nomeClasse, atributos, metodos);
00025         this.tipoGenerico = tipoGenerico;
00026     }
00027     
00033     public AmbienteExecucao elabora(AmbienteExecucao ambiente)
00034         throws ClasseJaDeclaradaException, ClasseNaoDeclaradaException {
00035 
00036         ambiente.mapDefClasse( nomeClasse, new DefClasseGenerica(atributos,metodos,tipoGenerico));
00037         return ambiente;
00038     }
00039     
00047     public boolean checaTipo(AmbienteCompilacao ambiente)
00048         throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException,
00049                ClasseJaDeclaradaException, ClasseNaoDeclaradaException,
00050                ProcedimentoNaoDeclaradoException, ProcedimentoJaDeclaradoException {
00051 
00052         //Mapeia o Tipo da classe
00053         ambiente.mapDefClasse(nomeClasse, new DefClasseGenerica(atributos,metodos,tipoGenerico));
00054         boolean resposta = false;
00055 
00056         //Mapeia o Tipo generico
00057         ambiente.incrementa();
00058         Id idGenerico = this.tipoGenerico.getTipo();
00059         ambiente.mapGeneric(idGenerico, this.tipoGenerico);
00060 
00061         if (atributos.checaTipo(ambiente)){
00062             ambiente.mapTipo(new Id("this"), new TipoClasseGeneric(nomeClasse, this.tipoGenerico));
00063             resposta =  metodos.checaTipo(ambiente);
00064         }
00065         ambiente.restaura();
00066         return resposta;
00067     
00068     }
00069 
00070    
00071 }

Generated on Mon Aug 8 20:20:46 2005 for Linguagem OO1 - Generics by  doxygen 1.4.4