Eclipse pull up es uno de los refactorings más habituales de Eclipse cuando estamos trabajando con jerarquías de clases. ¿Para qué sirve este refactoring y su complementario pull down? . Sirven para mover métodos entre diferentes niveles de una jerarquía de clases . Supongamos que disponemos de tres clases (Persona , Empleado y Deportista) y existe una relación de herencia entre las clases. Empleado y Deportista heredan de Persona , el código sería el siguiente:
package com.arquitecturajava; public class Persona { private String nombre; public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } }
package com.arquitecturajava; public class Empleado extends Persona{ private String trabajo; public String getTrabajo() { return trabajo; } public void setTrabajo(String trabajo) { this.trabajo = trabajo; } public void andar() { System.out.println("la persona anda"); } }
package com.arquitecturajava; public class Deportista extends Persona { private String deporte; public String getDeporte() { return deporte; } public void setDeporte(String deporte) { this.deporte = deporte; } public void andar() { System.out.println("la persona anda"); } }
El problema que tenemos con estas clases es que el método andar esta repetido en la jerarquía de clases y lo comparten tanto Empleado como Deportista:
Para solventar este problema debemos modificar la jerarquía de clases y subir el método andar a la clase Persona .
¿Cómo podemos realizar esta operación de forma automática con el Eclipse?. Vamos a usar el refactor de Eclipse Pull up para que Eclipse realice la operación por nosotros.
Eclipse Pull up
El primer paso es seleccionar la clase Empleado y pulsar botón derecho Refactor, nos aparecerán un conjunto de opciones, seleccionamos pull up:
Hecho esto Eclipse presenta un menu donde podemos seleccionar los métodos que deseamos mover por la jerarquía de clases:
En esto seleccionamos el método andar() y pulsamos en siguiente:
Accederemos a un menú que nos permite seleccionar el método andar de ambas clases tanto Deportista como Empleado , marcamos ambas y pulsamos siguiente:
Eclipse nos muestra los cambios que se producirán en las diferentes clases. Si estamos conformes podemos pulsar sobre finalizar y Eclipse procederá a modificar el código fuente:
package com.arquitecturajava; public class Persona { private String nombre; public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public void andar() { System.out.println("la persona anda"); } }
package com.arquitecturajava; public class Empleado extends Persona{ private String trabajo; public String getTrabajo() { return trabajo; } public void setTrabajo(String trabajo) { this.trabajo = trabajo; } }
package com.arquitecturajava; public class Deportista extends Persona { private String deporte; public String getDeporte() { return deporte; } public void setDeporte(String deporte) { this.deporte = deporte; } }
Acabamos de subir un método dentro de la jerarquía de clases con Eclipse Pull Up. La operación de Pull Down sería muy parecida.
- Eclipse y el concepto de Delegación
- Eclipse Kepler y maven
- Organizandonos con Eclipse II (Utility projects)
Gracias , muy interesante
de nada me alegro que te sea útil 🙂