INSTITUTO DE EDUCACIN SUPERIOR TECNOLGICO PBLICO
SANTIAGO ANTNEZ DE MAYOLO
CARRERA PROFESIONAL: COMPUTACIN E INFORMATICA
MDULO PROFESIONAL: DESARROLLO DE SOFTWARE Y GESTIN DE BASE DE
DATOS
UNIDAD DIDCTICA: HERRAMIENTA DE DESARROLLO DE SOFTWARE
MONOGRAFA
HERENCIA
Presentado a la:
Mg. MARIA MAGDALENA GMEZ GALINDO
Facilitador de la unidad
Realizado por:
BEJARANO HUALLPA, Rosario
HERRERA HUISA, Brangy
INGA MACUKACHI, Daniel
CASAS DVILA, Isabel
Alumnos del III semestre
PALIAN - HUANCAYO
2015
INTRODUCCIN
La herencia hace posible crear jerarquas de clases relacionadas
y reduce la cantidad de cdigo redundante en componentes de clases.
El soporte de la herencia es una de las propiedades que diferencia
los lenguajes orientados a objetos de los lenguajes basados en
objetos y lenguajes estructurados.
La herencia es la propiedad que permite definir nuevas clases
usando como base clases ya existentes. La nueva clase (clase
derivada) hereda los atributos y el comportamiento que son
especficos de ella. La herencia es una herramienta poderosa que
proporciona un marco adecuado para producir software fiable,
comprensible, de bajo coste, adaptable y reutilizable.
DEDICATORIA
A todas las personas que puedan hacer uso de esta informacin
para aumentar su conocimiento acerca de lo que es programacin.
INDICE
INTRODUCCIN.1
DEDICATORIA....2
INDICE..3
DEFINICIN.4
JERARQUA DE CLASES....5
REFINICIN DE ELEMENTOS HEREDADOS.....5
LA CLASE OBJECT.6
HERENCIA Y CONTRUCTORES...7
CASTING O MOLDES.8
CONCLUSIONES..9
RECOMENDACIONES...10
BIBLIOGRAFA...11
FUNDAMENTO TERICO
CAPITULO I
HERENCIA
1. DEFINICIN
La herencia es una propiedad que permite la declaracin de nuevas
clases a partir de otras ya existentes. Esto proporciona una de las
ventajas principales de la Programacin Orientada a Objetos: la
reutilizacin de cdigo previamente desarrollado ya que permite a una
clase ms especfica incorporar la estructura y comportamiento de una
clase ms general. Cuando una clase B se construye a partir de otra
A mediante la herencia, la clase B hereda todos los atributos,
mtodos y clases internas de la clase A. Adems la clase B puede
redefinir los componentes heredados y aadir atributos, mtodos y
clases internas especficas. Para indicar que la clase B (clase
descendiente, derivada, hija o subclase) hereda de la clase A
(clase ascendiente, heredada, padre, base o superclase) se emplea
la palabra reservada extends en la cabecera de la declaracin de la
clase descendiente. La sintaxis es la siguiente:
Public class ClaseB extends ClaseA {
// Declaracin de atributos y mtodos especficos de ClaseB
// y/o re declaracin de componentes heredados
}
2. JERARQUA DE CLASES
Java permite mltiples niveles de herencia pero no la herencia
mltiple, es decir una clase slo puede heredar directamente de una
clase ascendiente. Por otro lado, una clase puede ser ascendiente
de tantas clases descendiente como se desee (un nico padre,
multitud de hijos). En la Figura 1 se muestra grficamente un
ejemplo de jerarqua entre diferentes clases relacionadas mediante
la herencia.
FIGURA 1. Representacin de una jerarqua de clases relacionadas
mediante la herencia
3. REDEFINICIN DE ELEMENTOS HEREDADOS
Como se ha comentado anteriormente la clase descendiente puede
aadir sus propios atributos y mtodos pero tambin puede sustituir u
ocultar los heredados. En concreto:
1. Se puede declarar un nuevo atributo con el mismo
identificador que uno heredado, quedando este atributo oculto. Esta
tcnica no es recomendable.
2. Se puede declarar un nuevo mtodo de instancia con la misma
cabecera que el de la clase ascendiente, lo que supone su
sobreescritura. Por lo tanto, la sobreescritura o redefinicin
consiste en que mtodos adicionales declarados en la clase
descendiente con el mismo nombre, tipo de dato devuelto y nmero y
tipo de parmetros sustituyen a los heredados.
3. Se puede declarar un nuevo mtodo de clase con la misma
cabecera que el de la clase ascendiente, lo que hace que ste quede
oculto. Por lo tanto, los mtodos de clase o estticos (declarados
como static) no pueden ser redefinidos.
4. Un mtodo declarado con el modificador final tampoco puede ser
redefinido por una clase derivada.
5. Se puede declarar un constructor de la subclase que llame al
de la superclase de forma implcita o de mediante la palabra
reservada super.
6. En general puede accederse a los mtodos de la clase
ascendiente que han sido redefinidos empleando la palabra reservada
super delante del identificador del mtodo. Este mecanismo slo
permite acceder al mtodo perteneciente a la clase en el nivel
inmediatamente superior de la jerarqua de clases.
4. LA CLASE OBJECT
Independientemente de utilizar la palabra reservada extends en
su declaracin, todas las clases derivan de una superclase llamada
Object. sta es la clase raz de toda la jerarqua de clases de Java
(Figura 2). El hecho de que todas las clases deriven implcitamente
de la clase Object no se considera herencia mltiple.
Figura 2. Jerarqua de clases predefinidas en Java
5. HERENCIA Y CONSTRUCTORES
La subclase necesita normalmente que se ejecute el constructor
de la superclase antes que su propio constructor para inicializar
las variables de instancia heredadas. La solucin consiste en
utilizar la palabra reservada super seguida entre parntesis de los
parmetros correspondiente en el cuerpo del constructor de la
subclase. Es decir, incluir la siguiente sentencia como primera
lnea de cdigo:
super(argumentos opcionales);
De esta forma la implementacin de un constructor de la clase
descendiente slo necesita inicializar directamente las variables de
instancia no heredadas. Si no aparece como primera sentencia, el
compilador inserta una llamada implcita super(); que inicializa las
variables de instancia a cero, false, carcter nulo o null
dependiendo de su tipo. Esta llamada en cadena a los constructores
de las clases ascendientes llega hasta el origen de la jerarqua de
clases, es decir, hasta el constructor de la clase Object. En
cualquier caso, la creacin de una nueva instancia mediante un
constructor debe tener tres fases:
1. Llamada al constructor de la clase ascendiente
2. Se asignan valores a los atributos
3. Se ejecuta el resto del constructor
6. CASTING O MOLDES ENTRE OBJETOS CON RELACIN DE HERENCIA
El casting o moldeo permite el uso de un objeto de una clase en
lugar de otro de otra clase con el que haya una relacin de
herencia. Por ejemplo:
Object a = new Producto ();
Entonces a es momentneamente tanto una instancia de la clase
Object como Producto (hasta que ms adelante se le asigne un objeto
que no sea un Producto). A esto se le llama moldeo implcito.
Por otro lado, si se escribe:
Producto b = a;
Se obtendr un error de compilacin porque el objeto referenciado
por a no es considerado por el compilador como un Producto. Sin
embargo se le puede indicar al compilador que a la referencia a se
le va a asignar obligatoriamente un Producto.
Producto b = (Producto) a;
Este moldeo explcito introduce la verificacin durante la
ejecucin de que a la referencia a se le ha asignado un Producto as
que el compilador no genera un error. En el caso que durante la
ejecucin la referencia a no fuera a un Producto, se generara una
excepcin. Para asegurar esta situacin y evitar el error de ejecucin
se podra emplear el operador instanceof:
if (a instanceof Producto) {
Producto b = (Producto) a;
}
7. EJERCICIO DE APLICACIN
Clase principal
package herencia5;
public class Herencia5 {
public static void main(String[] args) {
Alumno Al=new Alumno("III", "Daniel","15");
System.out.println(Al.Mostrar());
}}
Super clase o clase padre
package herencia5;
public class Persona {
String Nombre;
String Edad;
public Persona(String Nombre, String Edad) {
this.Nombre = Nombre;
this.Edad = Edad;
}
public String Mostrar(){
return "El nombre es :"+Nombre+"\nLa edad es:"+Edad;
}}
subclase
package herencia5;
public class Alumno extends Persona{
String Semestre;
public Alumno(String Semestre, String Nombre, String Edad) {
super(Nombre, Edad);
this.Semestre = Semestre;
}
@Override
public String Mostrar(){
return super.Mostrar()+"\nEl semestre es:"+Semestre;
}}
CONCLUSIONES
Laherencia en la programacines nada ms y nada menos que usar
losatributosy mtodosque ya existen, en laPOOse hace heredando de
laclaseque contengan los elementos necesarios para tal fin. La
herencia en java(y en otros lenguajes) se declara con la palabra
reservadaextends seguidamente de la clase de la cual deseemos
heredar. Esto se realiza con la finalidad de reutilizar cdigo, como
tambin es la base para el implementar el polimorfismo.
RECOMENDACIONES
Si intentamos invocar unmtodo no estticoen elmtodo Mainnos
arrojara un error, para solucionar este inconveniente debemos de
hacer esttico el mtodo con la palabra reservadastaticpara poder
invocarlo directamente, este mtodo esttico no solo se podra invocar
en elMainsino tambin en los demsmtodos. Adems de lo anterior no
podremos heredar ms de una vez, para esto usamos polimorfismo, pero
esto es tema para otro post
Como se ve la implementacin de herencia no es difcil, lo
complicado es realizar una clase bien definida para poder usarla
como base en las dems clases, as que no dudes en gastar ms tiempo
en el anlisis y formular los procesos y atributos necesarios para
determinado fin.
BIBLIOGRAFIA
http://jagonzalez.org/herencia-en-java/
JaGonzalezCopyright 2015.
http://dis.um.es/~bmoros/privado/apuntes/Curso09-10/POO3-Java-0910.pdf
Garca-Beltrn y J.M. Arranz