ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Polimorfismo

hhmmmmgg28 de Diciembre de 2014

2.689 Palabras (11 Páginas)318 Visitas

Página 1 de 11

INFORME SOBRE POLIMORFISMO, HERENCIA, CLASES Y OBJETOS, ARREGLOS (ARRAY)

1) POLIMORFISMO:

Para empezar con esta entrada, se ha de decir que el término “Polimorfismo” es una palabra de origen griego que significa “muchas formas”. Este término se utiliza para “referirse a la propiedad por la que es posible enviar mensajes sintácticamente iguales a objetos de tipos distintos“.

La apariencia del código puede ser muy diferente dependiendo del lenguaje que se utilice, más allá de las obvias diferencias sintácticas.

Por ejemplo, en un lenguaje de programación que cuenta con un sistema de tipos dinámico (en los que las variables pueden contener datos de cualquier tipo u objetos de cualquier clase) como Smalltalk no se requiere que los objetos que se utilizan de modo polimórfico sean parte de una jerarquía de clases.

El Polimorfismo es uno de los 4 pilares de la programación orientada a objetos 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.

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:

En este ejemplo vamos a tener una clase padre (SelecciónFutbol) en la que tendremos los atributos y métodos comunes a todos los integrantes que forman la selección española de fútbol ( Entrenadores, Masajistas, etc.) y en ella se van a implementar los métodos del comportamiento “genérico” que deben de tener todos los integrantes de la selección. Como ya dijimos en la entrada de la herencia, la herencia no es más que sacar “factor común” del código que escribimos, así que los atributos y métodos de la clase SeleccionFutbol los tendrán también los objetos de las clases Futbolista, Entrenador y Masajista. Antes de seguir vamos a mostrar el código de la clase “SeleccionFutbol” para ver algunas peculiaridades:

Selección de futbol

}

package Polimorfismo;

public abstract class SeleccionFutbol {

protected int id;

protected String nombre;

protected String apellidos;

protected int edad;

public SeleccionFutbol() {

}

public SeleccionFutbol(int id, String nombre, String apellidos, int edad) {

this.id = id;

this.nombre = nombre;

this.apellidos = apellidos;

this.edad = edad;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getNombre() {

return nombre;

}

public void setNombre(String nombre) {

this.nombre = nombre;

}

public String getApellidos() {

return apellidos;

}

public void setApellidos(String apellidos) {

this.apellidos = apellidos;

}

public int getEdad() {

return edad;

}

public void setEdad(int edad) {

this.edad = edad;

}

public void viajar() {

System.out.println("Viajar (Clase Padre)");

}

public void concentrarse() {

System.out.println("Concentrarse (Clase Padre)");

}

// IMPORTANTE -> METODO ABSTRACTO => no se implementa

// en la clase abstracta pero si en la clases hijas

public abstract void entrenamiento();

public void partidoFutbol() {

System.out.println("Asiste al Partido de Fútbol (Clase Padre)");

}

Lo primero que nos debe de llamar la atención al ver este código es que utilizamos dos veces la palabra reservada “abstract“. Esta palabra nos indica que la clase “SeleccionFutbol” es una clase abstracta y las clases abstractas no se pueden instanciar, por tanto nunca podremos hacer un “new SeleccionFutbol()”. Otra cosa que vemos es que también utilizamos la palabra reservada abstract en un método (en el método entrenamiento). Esto quiere decir que todas las clases hijas de la clase “SeleccionFubol” tienen que tener implementado ese método obligatoriamente. Por tanto con esto que se acaba de contar y diciendo que la palabra “Polimorfismo” significa “muchas formas”, podéis deducir que la clase “SeleccionFutbol” es una clase que puede adoptar diferentes formas y en este ejemplo puede adoptar las formas de “Entrenador” y “Masajista”

Entrenador

package Polimorfismo;

public class Entrenador extends SeleccionFutbol {

private int idFederacion;

public Entrenador() {

super();

}

public Entrenador(int id, String nombre, String apellidos, int edad, int idFederacion) {

super(id, nombre, apellidos, edad);

this.setIdFederacion(idFederacion);

}

public int getIdFederacion() {

return idFederacion;

}

public void setIdFederacion(int idFederacion) {

this.idFederacion = idFederacion;

}

@Override

public void entrenamiento() {

System.out.println("Dirige un entrenamiento (Clase Entrenador)");

}

@Override

public void partidoFutbol() {

System.out.println("Dirige un Partido (Clase Entrenador)");

}

public void planificarEntrenamiento() {

System.out.println("Planificar un Entrenamiento");

}

}

Masajista

package Polimorfismo;

public class Masajista extends SeleccionFutbol {

private String titulacion;

private int aniosExperiencia;

public Masajista() {

super();

}

public Masajista(int id, String nombre, String apellidos, int edad, String titulacion, int aniosExperiencia) {

super(id, nombre, apellidos, edad);

this.titulacion = titulacion;

this.aniosExperiencia = aniosExperiencia;

}

public String getTitulacion() {

return titulacion;

}

public void setTitulacion(String titulacion) {

this.titulacion = titulacion;

}

public int getAniosExperiencia() {

return aniosExperiencia;

}

public void setAniosExperiencia(int aniosExperiencia) {

this.aniosExperiencia = aniosExperiencia;

}

@Override

public void entrenamiento() {

System.out.println("Da asistencia en el entrenamiento (Clase Masajista)");

}

public void darMasaje() {

System.out.println("Da un Masaje");

}

}

2) HERENCIA:

La Herencia es uno de los 4 pilares de la programación orientada a objetos (POO) junto con la Abstracción, Encapsulación y Polimorfismo. Al principio cuesta un poco entender estos conceptos característicos del paradigma de la POO porque solemos venir de otro paradigma de programación como el paradigma de la programación estructurada (ver la entrada”Paradigmas de Programación), pero se ha de decir que la complejidad está en entender este nuevo paradigma y no en otra cosa. En esta entrada vamos a explicar de la mejor manera posible que es la herencia y lo vamos a explicar con un ejemplo.

Respecto a la herencia se han dado muchas definiciones como por ejemplo la siguiente: “La herencia es un mecanismo que permite la definición de una clase a partir de la definición de otra ya existente. La herencia permite compartir automáticamente métodos y datos entre clases, subclases y objetos.“. Así de primeras esta definición es un poco difícil de digerir para aquellos que estéis empezando con la POO, así que vamos a intentar digerir esta definición con un ejemplo en el que veremos que la herencia no es más que un “Copy-Paste Dinámico” o una forma de “sacar factor común” al código que escribimos.

El ejemplo que proponemos es un caso en el que vamos a simular el comportamiento que tendrían los diferentes integrantes de la selección española de futbol; tanto los Futbolistas como el cuerpo técnico (Entrenadores, Masajistas, etc…). Para simular este comportamiento vamos a definir tres clases que van a representaran a objetos Futbolista, Entrenador y Masajista. De cada unos de ellos vamos a necesitar algunos datos que reflejaremos en los atributos y una serie de acciones que reflejaremos en sus métodos. Estos atributos y métodos los mostramos en el siguiente diagrama de clases:

Como se puede observar, vemos que en las tres clases tenemos atributos y métodos que con iguales ya que los tres tienen los atributos id, Nombre, Apellidos y Edad; y los tres tienen los métodos de Viajar y Concentrarse:

Selección:

package Seleccion;

/**

*

* @author hpi3

*

*/

public class Entrenador extends SeleccionFutbol {

...

Descargar como (para miembros actualizados) txt (20 Kb)
Leer 10 páginas más »
Disponible sólo en Clubensayos.com