Conviértete en un emprendedor,profesional del conocimiento en la programación

lunes, 9 de enero de 2012

Arreglo de Objetos Polimórficos

Compartir con:


POLIMORFISMO

Arreglo de Objetos Polimórficos

Estos arreglos se caracterizan porque soportan cualquier objeto de las clases descendientes de una jerarquía de clases, teniendo como clase Padre a una clase abstracta.

Ejemplo 1

Considere la existencia de la clase abstracta de nombre Figura, las clases hijas Cuadrado y Circulo.

Diseñe una clase administradora de nombre ArregloFiguras que permita la administración de objetos de tipo Cuadrado y/o Circulo a la vez, utilizando un objeto de la clase ArrayList.


     public class ArregloFiguras{
            protected ArrayList <Figura> a;

       public ArregloFiguras(){
            a = new ArrayList<Figura>(); }

    // métodos de administración

       public void agrega(Figura f){
               a.add(f); }

       public Figura getFigura(int i){
            return a.get(i); }

        public int getN(){
           return a.size();}

        public void elimina(int i){
               a.remove(i); }
}

Diseñe una clase de interfaz de nombre PanelPrincipal donde cree un objeto de la clase ArregloFiguras, como atributo de la clase.

protected ArregloFiguras af = new ArregloFiguras();

Programación del botón Nuevo Circulo:{
             Figura a = new Circulo(leeRadio());
               lista(a);
               af.agrega(a); // agrega un objeto Circulo }

Programación del botón Nuevo Cuadrado:{

         Figura b = new Cuadrado(leeLado());
          lista(b);
          af.agrega(b); // agrega un objeto Cuadrado }

         public void lista(Figura f){
              imprime(f.info()); }

Programación del botón Lista:{
       for(int i=0; i<af.getN(); i++){
           Figura f=af.getFigura(i);
            if (f instanceof Circulo)
            imprime(“Circulo: “+f.info());
else
            imprime(“Cuadrado: “+f.info());
}
   }

La palabra reservada instanceof permite identificar el tipo personalizado de un objeto genérico. Esto permite darle un nombre diferente antes de mostrar su información que es un método común.

0 comentarios:

Publicar un comentario