ratkoz
Páginas: 16 (3933 palabras)
Publicado: 21 de agosto de 2014
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 queesté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 losFutbolistas 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 siguientediagrama de clases:
NOTA: en este diagrama y en adelante no vamos a poner los constructores y métodos getter y setter con el fin de que el diagrama nos quede grande e “intendible” aunque en un buen diagrama de clases deberían aparecer para respetar el principio de encapsulación de la POO
Como se puede observar, vemos que en las tres clases tenemos atributos y métodos que con iguales ya que lostres tienen los atributos id, Nombre, Apellidos y Edad; y los tres tienen los métodos de Viajar y Concentrarse:
A nivel de código tenemos lo siguiente tras ver el diagrama de clases:
public class Futbolista
{
private int id;
private String Nombre;
private String Apellidos;
private int Edad;
private int dorsal;
private String demarcacion;
// constructor, getter y setterpublic void Concentrarse() {
...
}
public void Viajar() {
...
}
public void jugarPartido() {
...
}
public void entrenar() {
...
}
}
public class Entrenador
{
private int id;
private String Nombre;
private String Apellidos;
private int Edad;
private String idFederacion;
// constructor, getter y setter
public void Concentrarse() {
...
}public void Viajar() {
...
}
public void dirigirPartido() {
...
}
public void dirigirEntreno() {
...
}
}
public class Masajista
{
private int id;
private String Nombre;
private String Apellidos;
private int Edad;
private String Titulacion;
private int aniosExperiencia;
// constructor, getter y setter
public void Concentrarse() {
...
}
publicvoid Viajar() {
...
}
public void darMasaje() {
...
}
}
Lo que podemos ver en este punto es que estamos escribiendo mucho código repetido ya que las tres clases tienen métodos y atributos comunes, de ahi y como veremos enseguida, decimos que la herencia consiste en “sacar factor común” para no escribir código de más, por tanto lo que haremos sera crearnos una clase con el “códigoque es común a las tres clases” (a esta clase se le denomina en la herencia como “Clase Padre o SuperClase”) y el código que es especifico de cada clase, lo dejaremos en ella, siendodenominadas estas clases como “Clases Hijas”, las cuales heredan de la clase padre todos los atributos y métodos públicos o protegidos. Es muy importante decir que las clases hijas no van a heredar nunca los atributosy métodos privados de la clase padre, así que mucho cuidado con esto. En resumen para que veáis la ventaja de la herencia, tenemos ahora una clase padre con ‘n’ lineas de código y tres clases hijas con ‘a’, ‘b’ y ‘c’ lineas de códigos respectivamente, por tanto si hecháis cuentas, hemos reducido nuestro código en ’2n’ líneas menos ya que antes teníamos ‘(n+a)+(n+b)+(n+c)’ líneas de código y...
Leer documento completo
Regístrate para leer el documento completo.