Herencia Expo

15
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO “SANTIAGO ANTÚNEZ DE MAYOLO” CARRERA PROFESIONAL: COMPUTACIÓN E INFORMATICA MÓDULO PROFESIONAL: DESARROLLO DE SOFTWARE Y GESTIÓN DE BASE DE DATOS UNIDAD DIDÁCTICA: HERRAMIENTA DE DESARROLLO DE SOFTWARE MONOGRAFÍA Presentado a la: Mg. MARIA MAGDALENA GÓMEZ GALINDO Facilitador de la unidad Realizado por: BEJARANO HUALLPA, Rosario HERRERA HUISA, Brangy INGA MACUKACHI, Daniel CASAS DÁVILA, Isabel Alumnos del III semestre HERENCIA

Transcript of Herencia Expo

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