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

CompostaDecVariavel.java

Go to the documentation of this file.
00001 package plp.orientadaObjetos1.declaracao.variavel;
00002 
00003 import plp.orientadaObjetos1.excecao.comando.TryCatchException;
00004 import plp.orientadaObjetos1.excecao.declaracao.ClasseJaDeclaradaException;
00005 import plp.orientadaObjetos1.excecao.declaracao.ClasseNaoDeclaradaException;
00006 import plp.orientadaObjetos1.excecao.declaracao.ObjetoJaDeclaradoException;
00007 import plp.orientadaObjetos1.excecao.declaracao.ObjetoNaoDeclaradoException;
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 import plp.orientadaObjetos1.memoria.AmbienteExecucao;
00013 import plp.orientadaObjetos1.util.Tipo;
00014 
00018 public class CompostaDecVariavel implements DecVariavel{
00022     private DecVariavel declaracao1;
00026     private DecVariavel declaracao2;
00027 
00033     public  CompostaDecVariavel(DecVariavel declaracao1, DecVariavel declaracao2){
00034         this.declaracao1 = declaracao1;
00035         this.declaracao2 = declaracao2;
00036     }
00037     
00038     public CompostaDecVariavel(DecVariavel declaracao1) {
00039         this.declaracao1 = declaracao1;
00040     }
00041     
00042     public CompostaDecVariavel() {
00043     }
00044 
00045     public void setCurrent(DecVariavel declaracao1) {
00046         this.declaracao1 = declaracao1;
00047     }    
00048     
00049     public DecVariavel getCurrent() {
00050         return this.declaracao1;
00051     } 
00052     
00053     public void setNext(DecVariavel declaracao2) {
00054         this.declaracao2 = declaracao2;
00055     }
00056     
00057     public DecVariavel getNext() {
00058         return this.declaracao2;
00059     }    
00060     
00068     public Tipo getTipo(Id id) throws VariavelNaoDeclaradaException {
00069         Tipo tipo;
00070         try {
00071             tipo = declaracao1.getTipo(id);
00072         }
00073         catch(VariavelNaoDeclaradaException e) {
00074             tipo = declaracao2.getTipo(id);
00075         }
00076         return tipo;
00077 
00078     }
00079 
00087     public AmbienteExecucao executar(AmbienteExecucao ambiente)
00088         throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException,
00089               ObjetoNaoDeclaradoException, ObjetoJaDeclaradoException,
00090               ClasseJaDeclaradaException, ClasseNaoDeclaradaException, TryCatchException{
00091         return declaracao2.executar(declaracao1.executar(ambiente));
00092     }
00093 
00102     public boolean checaTipo(AmbienteCompilacao ambiente)
00103         throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException,
00104                ClasseNaoDeclaradaException, ClasseJaDeclaradaException {
00105         return declaracao1.checaTipo(ambiente) && declaracao2.checaTipo(ambiente);
00106     }
00107 
00108     public String toString() {
00109         String resposta = null;
00110         resposta = this.declaracao1.toString() + ";\n" + this.declaracao2.toString();
00111         return resposta;
00112     }
00113 }

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