JAVA: HERANÇA

QUEREMOS MOSTRAR O CONCEITO DE HERANÇA DO JAVA

COMEÇAMOS COM UMA CLASSE BÁSICA DE ATRIBUTOS PROJETADA PARA MANTER PARES DE NOME-VALOR


class Atributo {
   private String nome;
   private Object valor = null;

   public Atributo( String nome ) {
      this.nome = nome;
   }

   public Atributo( String nome, Object valor ) {
      this.nome = nome;
      this.valor = valor;
   }

   public String getNome() {
      return nome;
   }

   public Object getValor() {
      return valor;
   }

   public Object setValor( Object novoValor ) {
      Object valorVelho = valor;
      valor = novoValor;
      return valorVelho;
   }

   public String toString() {
      return nome + "='" + valor + "'";
   }
}

AGORA, QUEREMOS ESTENDER A CLASSE PARA CONSTRUIR UMA CLASSE QUE ARMAZENE ATRIBUTOS DE COR


class AtributoDeCor extends Atributo {
   private ScreenColor minhaCor;  // a cor decodificada

   public AtributoDeCor( String nome, Object valor ) {
      super( nome, valor );
      decodificaCor();
   }

   public AtributoDeCor( String nome ) {
      this( nome, "transparent" );  // chama outro construtor
      decodificaCor();
   }

   public AtributoDeCor( String nome, ScreenColor valor ) {
      super( nome, valor.toString() );
      minhaCor = valor;
   }

   public Object setValor( Object novoValor ) {
      // faca o trabalho de setValor da superclasse primeiro
      Object valRet = super.setValor( novoValor );
      decodificaCor();
      return valRet;
   }

   /** Seta valor para ScreenColor, nao descricao */
   public ScreenColor setValor( ScreenColor novoValor ) {
      // faca o trabalho da superclasse primeiro
      super.setValor( novoValor.toString() );
      ScreenColor valorVelho = minhaCor;
      minhaCor = novoValor;
      return valorVelho;
   }

   /** retorna cor decodificada */
   public ScreenColor getCor() {
      return minhaCor;
   }

   /** seta ScreenColor a partir da descricao em getValor */
   protected void decodificaCor() { // Falaremos de protected depois
      if( getValor() == null ) {
         minhaCor = null;
      } else {
         minhaCor = new ScreenColor( getValor() );
      }
   }
}
JAVA-22 home programa anterior próxima