POLIMORFISMO
El Polimorfismo es uno de los 4 pilares de la programación orientada a objetos (POO) junto con la Abstracción, Encapsulación y Herencia. Para entender que es el polimorfismo es muy importante que tengas bastante claro el concepto de la Herencia.
Para empezar con esta entrada, se ha de decir que el término “Polimorfismo” es una palabra de origen griego que significa “muchasformas”. Este termino se utiliza en la POO para “referirse a la propiedad por la que es posible enviar mensajes sintácticamente iguales a objetos de tipos distintos“. Como esta definición quizás sea algo difícil de entender, vamos a explicarla con el ejemplo que pusimos en la entrada de la herencia en la que queríamos simular el comportamiento que tendrían los diferentes integrantes de la selección española de fútbol; tanto los Futbolistas como el cuerpo técnico (Entrenadores, Masajistas, etc…). Para este ejemplo nos vamos a basar en el siguiente diagrama de clases:
ejemplo:
//Código de la clase Persona ejemplo aprenderaprogramar.com
public class Persona {
private String nombre; private String apellidos; private int edad;
public Persona() { nombre = ""; apellidos = ""; edad = 0; }
public Persona (String nombre, String apellidos, int edad) {
this.nombre = nombre; this.apellidos = apellidos; this.edad = edad; }
public String getNombre() { return nombre; }
public String getApellidos () { return apellidos; }
public int getEdad() { return edad; }
} //Cierre de la clase
|
public class Profesor extends Persona { //Ejemplo aprenderaprogramar.com
private String IdProfesor;
public Profesor () { super();
IdProfesor = "Unknown";}
public Profesor (String nombre, String apellidos, int edad) {
super(nombre, apellidos, edad);
IdProfesor = "Unknown"; }
public void setIdProfesor (String IdProfesor) { this.IdProfesor = IdProfesor; }
public String getIdProfesor () { return IdProfesor; }
public void mostrarDatos() {
System.out.println ("Datos Profesor. Profesor de nombre: " + getNombre() + " " + getApellidos() +
" con Id de profesor: " + getIdProfesor() ); }
} //Cierre de la clase ejemplo aprenderaprogramar.com
|
import java.util.Calendar; //Ejemplo aprenderaprogramar.com
public class ProfesorInterino extends Profesor {
private Calendar FechaComienzoInterinidad;
public ProfesorInterino(Calendar fechaComienzaInterinidad) {
super();
FechaComienzoInterinidad = fechaComienzaInterinidad; }
public ProfesorInterino (String nombre, String apellidos, int edad, Calendar fechaComienzaInterinidad) {
super(nombre, apellidos, edad);
FechaComienzoInterinidad = fechaComienzaInterinidad; }
public Calendar getFechaComienzoInterinidad () { return FechaComienzoInterinidad; }
public void mostrarDatos() { System.out.println("Datos ProfesorInterino. Comienzo interinidad: " +
FechaComienzoInterinidad.getTime().toString() ); }
} //Cierre de la clase
|
import java.util.ArrayList; //Ejemplo aprenderaprogramar.com
public class ListinProfesores{
private ArrayList <Profesor> listinProfesores;
//Constructor
public ListinProfesores () {
listinProfesores = new ArrayList <Profesor> (); }
//Métodos
public void addProfesor (Profesor profesor) {
listinProfesores.add(profesor); } // Cierre método addProfesor
public void listar() {
System.out.println ("Se procede a mostrar los datos de los profesores existentes en el listín");
for (Profesor tmp: listinProfesores) { //Uso de for extendido
tmp.mostrarDatos(); }
} //Cierre método
} //Cierre de la clase
|
import java.util.Calendar; //Ejemplo aprenderaprogramar.com
public class TestHerencia4 {
public static void main (String [ ] Args) {
Profesor profesor1 = new Profesor ("Juan", "Hernández García", 33);
profesor1.setIdProfesor("Prof 22-387-11");
Calendar fecha1 = Calendar.getInstance();
fecha1.set(2019,10,22); //Los meses van de 0 a 11, luego 10 representa noviembre
ProfesorInterino interino1 = new ProfesorInterino("José Luis", "Morales Pérez", 54, fecha1);
ListinProfesores listin1 = new ListinProfesores ();
listin1.addProfesor(profesor1);
listin1.addProfesor(interino1);
listin1.listar(); } //Cierre del main
} //Cierre de la clase
|

No hay comentarios.:
Publicar un comentario