INTERFACES, HASHTABLE E ENUMERATION

JAVA SÓ PERMITE ESTENDER UMA CLASSE

MAS PODE TER HERANÇA MÚLTIPLA DE INTERFACE

EXEMPLO: QUEREMOS CRIAR UMA CLASSE (DIGAMOS PARA REPRESENTAR CARROS) QUE TENHA ATRIBUTOS


class CarroComAtributos  extends Carro implements ComAtributos {
   ...
}

public interface ComAtributos {
   void adiciona( Atributo novoAtributo );      // adiciona um atributo ao objeto
   Atributo localiza( String nomeAtributo );   // verifica se o objeto tem um dado atributo
   Atributo remove( String nomeAtributo ); // remove um atributo do objeto
   java.util.Enumeration atribs();         // retorna uma lista de atributos do objeto
}

IMPLEMENTAÇÃO DE INTERFACES


import java.util.*;

class ImplComAtributos implements ComAtributos {
   protected Hashtable tabelaAtributos = new Hashtable();

   public void adiciona( Atributo novoAtributo ) {
      tabelaAtributos.put( novoAtributo.getNome(), novoAtributo );
   }

   public Atributo localiza( String nome ) {
      return (Atributo)tabelaAtributos.get( nome );
   }

   public Atributo remove( String nome ) {
      return (Atributo)tabelaAtributos.remove( nome );
   }

   public Enumeration atribs() {
      return tabelaAtributos.elements();
   }
}

Enumeration e = table.elements();
while( e.hasMoreElements() ) {
   facaAlgoCom( e.nextElement() );
}

USANDO UMA IMPLEMENTAÇÃO DE UMA INTERFACE


class CarroComAtributos extends Carro implements ComAtributos {
   ImplComAtributos implAtributos = new ImplComAtributos();

   // herda todos os metodos de carro

   CarroComAtributos() {
      super();
   }

   CarroComAtributos( String name, Carro umCarro ) {
      super( nome, umCarro );
   }

   // Use forwarding para todos os metodos de ComAtributos
   public void adiciona( Atributo novoAtributo ) {
      implAtributos.adiciona( novoAtributo );
   }

   public Atributo localiza( String nome ) {
      return implAtributos.localiza( nome );
   }

   public Atributo remove( String nome ) {
      return implAtributos.remove( nome );
   }

   public Enumeration atribs() {
      return implAtributos.atribs();
   }
}

QUANDO USAR INTERFACES

JAVA-26 home programa anterior próxima