3. POLIMORFISMO EN JAVA
Polimorfismo
El polimorfismo es un concepto de la programación
orientada a objetos que nos permite programar en forma
general, en lugar de hacerlo en forma específica. En general
nos sirve para programar objetos con características
comunes y que todos estos compartan la misma superclase
en una jerarquía de clases, como si todas fueran objetos de
la superclase. Esto nos simplifica la programación.
Recuerde el ejemplo del ecosistema, en donde todos los
objetos de las distintas especies heredaban de una
superclase llamada Animal, que brindaba la información
general de cualquier animal, independiente de su especie. Sin embargo, cada especie hace un uso particular
de cada uno de los métodos u operaciones de la clase Animal. El método comer() no se ejecutará de la
misma manera en un León() o en un Pavo(). Lo mismo ocurre para métodos moverse() en objetos de
tipo Tiburón() o Gallina(), aunque todas las especies realicen estos métodos. A la sobrescritura o
implementación específica de métodos es la clave del polimorfismo.
Para poner en práctica se hará un ejemplo bastante sencillo. Se hará una librería de clases que represente
figuras tridimensionales y bidimensionales, y su respectiva jerarquía de clases. Las clases deben ser capaces
de tener funcionamiento bastante básico, como obtener áreas, volúmenes y perímetros de la figura
correspondiente.
La representación de la jerarquía sería como ésta:
Click a la imagen para verla más
grande...
La superclase de dicha jerarquía podría ser muy parecida a ésta:
4. publicabstractclass figura {
protected String nombre;
protectedint color;
protectedint grosorBorde;
public StringgetNombre(){
returnthis.nombre;
}
publicvoid setNombre(String n){
this.nombre=n;
}
publicint getColor(){
returnthis.color;
}
publicvoid setColor(int c){
this.color=c;
}
publicint getGrosorBorde(){
returnthis.grosorBorde;
}
publicvoid setGrosorBorde(int g){
this.grosorBorde=g;
}
publicabstractvoid dibujar();
}
Las siguientes clases en el nivel de la jerarquía podrían quedar muy parecidas a éstas:
publicabstractclass figura2D extends figura {
publicabstractint calcularArea();
publicabstractint calcularPerimetro();
}
publicabstractclass figura3D extends figura {
publicabstractint calcularVolumen();
}
Se le pide que forme las clases de la parte inferior de la jerarquía y que representarían los objetos a
instanciarse.
Además, debe de realizar una implementación de esta librería, en donde el usuario pueda crear nuevas
figuras y que éstas se almacenen en un arreglo de figuras.