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