00001 package plp.orientadaObjetos1.util; 00002 00003 import plp.orientadaObjetos1.excecao.declaracao.ClasseNaoDeclaradaException; 00004 import plp.orientadaObjetos1.expressao.leftExpression.Id; 00005 import plp.orientadaObjetos1.memoria.AmbienteCompilacao; 00006 00010 public class TipoClasse implements Tipo { 00011 00015 protected Id tipoClasse; 00016 00020 public static final Id NULL = new Id("NULL"); 00021 00025 public static final Tipo TIPO_NULL = new TipoClasse(NULL); 00026 00032 public TipoClasse(Id tipoClasse) { 00033 this.tipoClasse = tipoClasse; 00034 } 00035 00036 00043 public TipoClasse(TipoGeneric generic) { 00044 this.tipoClasse = generic.getTipo(); 00045 } 00046 00047 00053 public Id getTipo() { 00054 return tipoClasse; 00055 } 00056 00057 00065 public boolean eValido(AmbienteCompilacao ambiente) 00066 throws ClasseNaoDeclaradaException { 00067 boolean resposta = false; 00068 try{ 00069 resposta = (tipoClasse == NULL) || (ambiente.getDefClasse(tipoClasse) != null); 00070 } 00071 catch(ClasseNaoDeclaradaException c){ 00072 resposta = false; 00073 } 00074 return resposta; 00075 } 00076 00083 public boolean equals(Object obj) { 00084 return (obj instanceof TipoClasse) && 00085 ((TipoClasse)obj).tipoClasse.equals(this.tipoClasse); 00086 } 00091 public String toString() { 00092 return tipoClasse.toString(); 00093 } 00094 }