You are on page 1of 17

Herencia 1

Prof. Pablo Macón


profemacon@gmail.com
http://pablomacon.wixsite.com/home/
Herencia - Análisis
A nivel conceptual, la Herencia define una
relación "ser" entre dos Clases de Objetos, las
cuales se denominan clase base (o superclase) y
clase derivada (o subclase).
Herencia - Análisis
Esta relación significa que todos los objetos de
la clase derivada son también objetos de la clase
base.
Sin embargo, no se cumple que todos los
objetos de la clase base son también objetos de
la clase derivada.
Herencia - Análisis
A la hora de detectar la presencia de una
asociación de Herencia en una realidad, se
aplican dos estrategias llamadas generalización
y la especialización.
Herencia - Análisis
Generalización: Consiste en introducir una
nueva clase base que reúna atributos comunes a
varias Clases de la realidad.
Auto, Camión, Moto son Vehículos
Estudiante, Profesor, Adscripto son Personas
Herencia - Análisis
Especialización: Consiste en agregar una nueva
clase derivada de otra ya existente.
De la clase Auto, puedo obtener Descapotable.
De la clase Casa puedo derivar Chalet
Herencia - Análisis
Las clases derivadas reciben (heredan) todos los
atributos y métodos de la superclase:
Si un objeto Persona tiene nombre y apellido, un
objeto Estudiante tendrá nombre y apellido.
Herencia - Diseño
En el diagrama de clases UML
una relación de herencia
se representa con un triángulo
que apunta desde la clase
derivada hacia la superclase.
Herencia - Diseño
Puedo derivar varias clases de una misma
superclase
Herencia - Diseño
Se puede formar una jerarquía de varios niveles
Herencia - Implementación
En cuanto a la implementación en Java, una
relación de herencia es una de las formas en que
podemos re-utilizar código.
Una clase derivada no necesita re-escribir todo
el código que ya ha sido escrito para la clase
base.
Herencia - Implementación
public class Vehiculo {
private int id;
private String marca;
private String modelo;

}
Herencia - Implementación
public class Vehiculo {
public Vehiculo (int id, String mar, String
mod)
{ this.id = id;
this.marca = mar;
this.modelo = mod;
...
Herencia - Implementación
public class Vehiculo {
… getters
… setters
… toString()
....
}
Herencia - Implementación
public class Auto extends Vehiculo {
private int cantPuertas;
public Auto (int id, String mar, String mod,
int cantP);
super (id, mar, mod); Se invoca al
this.cantPuertas = cantP; constructor de la
clase base
}
Herencia - Implementación
Una vez que hemos implementado la clase base,
podemos hacer referencia a cualquier elemento
o método de la superclase, mediante la palabra
clave super
public String toString(){
return super.toString + “algo nuevo”;
}

You might also like