7
 Universidad Tecnológica de El Salvador Programación Orientada a Objetos Ing. José Oswaldo Barrera Montes HERENCIA Definición. Es la capacidad de crear clases que adquieran de manera automática los miembros (atributos y métodos) de otras clases que ya existen, pudiendo al mismo tiempo agregar sus propios atributos y métodos. Ventajas: - La reutilización de código. En ocasiones se necesita crear clases que, además de sus propios miembros incluyan los ya definidos en otra. Con la herencia evitamos reescribir todos los miembros de la nueva clase. - Mantenimiento de aplicaciones existentes. A través de la herencia, al tener clases con determinada funcionalidad, y, si en algún momento dado se tiene la necesidad de ampliar el funcionamiento de esta, no será necesario modificar la clase existente (la cual se puede seguir utilizando para el tipo de programa que fue diseñada) sino que puede crearse una clase que herede de la primera, adquiriendo toda su funcionalidad y añadiendo la suya propia. Reglas: - La clase que va a ser heredada se le conoce como superclase  o clase base, mientras que a la que hereda se le llama subclase o clase derivada. - Gráficamente, la herencia entre dos clases se representa con una flecha saliendo de la subclase hacia la superclase. - El lenguaje Java no permite la herencia múltiple, es decir, una subclase no puede heredar de más de una superclase. - Java permite la herencia multinivel, es decir, una subclase B, que hereda de A, puede convertirse en superclase de una clase C. - Una clase puede heredar a muchas subclases. - Los constructores no se heredan. - Mediante la utilización de la palabra super  puede invocarse el constructor de la superclase desde la subclase. - Los miembros privados no se heredan. - Cuando se quiere impedir la herencia de una clase o un miembro, se debe anteponer la palabra reservada final . - La herencia es creada en el momento que se hace uso de la palabra reservada extends, para indicar que se va a crear una clase a partir de otra.

1. Herencia UML

Embed Size (px)

DESCRIPTION

Herencia UML

Citation preview

  • Universidad Tecnolgica de El Salvador

    Programacin Orientada a Objetos Ing. Jos Oswaldo Barrera Montes

    HERENCIA

    Definicin.

    Es la capacidad de crear clases que adquieran de manera automtica los miembros (atributos y

    mtodos) de otras clases que ya existen, pudiendo al mismo tiempo agregar sus propios atributos

    y mtodos.

    Ventajas:

    - La reutilizacin de cdigo. En ocasiones se necesita crear clases que, adems de sus

    propios miembros incluyan los ya definidos en otra. Con la herencia evitamos reescribir

    todos los miembros de la nueva clase.

    - Mantenimiento de aplicaciones existentes. A travs de la herencia, al tener clases con

    determinada funcionalidad, y, si en algn momento dado se tiene la necesidad de ampliar

    el funcionamiento de esta, no ser necesario modificar la clase existente (la cual se puede

    seguir utilizando para el tipo de programa que fue diseada) sino que puede crearse una

    clase que herede de la primera, adquiriendo toda su funcionalidad y aadiendo la suya

    propia.

    Reglas:

    - La clase que va a ser heredada se le conoce como superclase o clase base, mientras que a

    la que hereda se le llama subclase o clase derivada.

    - Grficamente, la herencia entre dos clases se representa con una flecha saliendo de la

    subclase hacia la superclase.

    - El lenguaje Java no permite la herencia mltiple, es decir, una subclase no puede heredar

    de ms de una superclase.

    - Java permite la herencia multinivel, es decir, una subclase B, que hereda de A, puede

    convertirse en superclase de una clase C.

    - Una clase puede heredar a muchas subclases.

    - Los constructores no se heredan.

    - Mediante la utilizacin de la palabra super puede invocarse el constructor de la superclase

    desde la subclase.

    - Los miembros privados no se heredan.

    - Cuando se quiere impedir la herencia de una clase o un miembro, se debe anteponer la

    palabra reservada final.

    - La herencia es creada en el momento que se hace uso de la palabra reservada extends,

    para indicar que se va a crear una clase a partir de otra.

  • Universidad Tecnolgica de El Salvador

    Programacin Orientada a Objetos Ing. Jos Oswaldo Barrera Montes

    Representacin grfica de la herencia que podemos realizar en Java:

    Permitido: Permitido: Permitido:

    No permitido:

    Ejemplos:

    1) En una clase Persona tenemos dos variables llamadas nombre y apellido, adems un

    mtodo que imprime en pantalla la concatenacin de los dos atributos (variables).

    A partir de Persona cree dos subclases, llmelas Profesor y Estudiante, no declare

    ningn miembro en ellas.

    Cree la clase de entrada al sistema (la que tiene el mtodo main) desde ella cree una

    instancia por subclase e invoque los tres miembros que se han heredado.

    Solucin:

  • Universidad Tecnolgica de El Salvador

    Programacin Orientada a Objetos Ing. Jos Oswaldo Barrera Montes

    En las dos subclases creadas no se han declarado miembros, sin embargo es posible

    hacerlo.

    2) Realizar el ejercicio anterior, quite a la clase Persona el mtodo Nombre, solo deje las

    variables; aada el mtodo Estudiar a la clase Estudiante, y en la clase Profesor agregue

    el mtodo Explicar.

    Solucin:

    SUPERCLASE.

    En ella tenemos tres

    miembros, 2 variables

    Sub clase Estudiante,

    creada a partir de la

    clase Persona, la cual

    pasa a convertirse en

    superclase.

    Sub clase Profesor,

    creada a partir de la

    clase Persona, la cual

    pasa a llamarse

    superclase.

    Se han creado

    un objeto por

    cada subclase,

    con estos

    podemos

    acceder a los

    miembros de

    que se

    heredaron.

    Vea como cada miembro heredado

    es invocado, aunque no se

    declararon en la clase forman parte

    de ella. Esa es la gran ventaja de la

    herencia, nos evita reescribir

    cdigo. En este caso se invocan los

    miembros de la clase Estudiante.

  • Universidad Tecnolgica de El Salvador

    Programacin Orientada a Objetos Ing. Jos Oswaldo Barrera Montes

    Lneas 1-4: se ha declarado una clase llamada Persona, de la cual se crearn posteriormente dos

    subclase.

    Lnea 6: se crea la clase Estudiante a partir de la clase Persona.

    Lneas 8-11: se define el mtodo Estudiar, el cual simplemente imprime un mensaje en pantalla.

    Vea como utilizamos las variables nombre y apellido sin que se hayan declarado en esta clase, pero

    como ya vimos, al crear una clase a partir de otra, los miembros de la superclase pasan a ser parte

    de la subclase, y esta ltima tambin puede crear sus propios miembros, como es el caso del

    mtodo que estamos explicando en estas lneas.

  • Universidad Tecnolgica de El Salvador

    Programacin Orientada a Objetos Ing. Jos Oswaldo Barrera Montes

    Lnea 14: se crea la clase Profesor a partir de la clase Persona.

    Lneas 16-19: se define el mtodo Explicar, el cual simplemente imprime un mensaje en pantalla.

    Vea como utilizamos las variables nombre y apellido sin que se hayan declarado en esta clase, pero

    como ya vimos, al crear una clase a partir de otra, los miembros de la superclase pasan a ser parte

    de la subclase, y esta ltima tambin puede crear sus propios miembros, como es el caso del

    mtodo que estamos explicando en estas lneas.

    Lneas 26 y 27: se han creado un objeto de las clases Estudiante y Profesor.

    Lneas 29 y 31: se realiza una invocacin a cada uno de los miembros de la clase Estudiante. A las

    variables nombre y apellido se les est enviado un valor, las cuales son invocadas con el objeto

    respectivo, sin este no sera posible accesar a ellas, lo ltimo y no menos importante, es que

    dichas variables no fueron declaradas en esta clase, se heredaron de Persona.

    Lneas 29 y 31: la explicacin es igual que las lneas anteriores, pero ahora con el objeto de la clase

    Profesor.

    3) Realizar el ejercicio dos con las siguientes particularidades, al mtodo Estudiar de la

    clase Estudiante agregue un parmetro tipo Profesor y al mtodo Explicar de la clase

    Profesor agregue parmetro tipo Estudiante. En el mensaje que imprime cada mtodo,

    utilice el parmetro como un objeto para invocar las variables de la clase a la cual

    corresponde el tipo del parmetro.

    Explicacin previa:

    Qu significa eso que se ha sombreado?

    Primero iniciamos haciendo un breve recordatorio, usted sabe y tiene muy claro cmo se declara

    una variable, recuerde, no importa el tipo de dato que tendr la variable, el proceso para

    declararla ser siempre la misma; partiendo de eso, podemos entonces declarar miembros con

    tipos de datos no primitivos de Java (tipos primitivos son todos aquellos que el lenguaje trae

    predefinidos, los que hemos estado utilizando), es decir aquellos creados por nosotros mismos.

    Hasta hoy hemos visto como se crea una clase y hemos aprendido a hacerlo, lo que realmente

    hacemos al declarar una clase es crear un tipo de dato, entonces pueden crearse miembros

    (mtodos o variables) de ese tipo. Cada vez que usted defina un miembro con un tipo

    personalizado, nunca debe olvidar que debe existir la clase, para que el tipo de dato exista.

    Regresando a la pregunta inicial, los parmetros que cree en cada mtodo mencionado no son

    String, int o algn otro tipo ya conocido, son de uno creado por nosotros, Profesor y Estudiante.

    Cuando se define una variable de un tipo creado por nosotros, esa variable lo que puede guardar

    es objetos de la clase a la cual el tipo pertenece; si se trata de un mtodo, este debe retornar

    objetos de la clase que corresponda.

  • Universidad Tecnolgica de El Salvador

    Programacin Orientada a Objetos Ing. Jos Oswaldo Barrera Montes

    Solucin:

    Lnea 8: ya usted not en la parte sombreada, se ha declarado un parmetro en el

    mtodo, el cual se llama pr y su tipo es Profesor; esto ltimo significa que corresponde a

    un valor definido por nosotros mismos, la clase Profesor debe existir para que puedan

    crearse miembros de ese tipo, de lo contrario no es posible.

    Lnea 10: preste atencin a lo sombreado, vea que estamos invocando las variables

    nombre y apellido de la clase Profesor, las cuales como ya pudo notar han sido heredadas

    a partir de Persona. Utilizamos el parmetro pr como si de un objeto se tratara, la razn es

    sencilla, al tratarse de un parmetro de ese tipo, este slo podr almacenar objetos de la

    clase de la cual l procede.

  • Universidad Tecnolgica de El Salvador

    Programacin Orientada a Objetos Ing. Jos Oswaldo Barrera Montes

    Lnea 16: en la parte sombreada la explicacin es igual que la lnea 8, pero en esta ocasin

    se trata de un parmetro del tipo Estudiante.

    Lnea 18: la explicacin dada para la lnea 10 aplica para esta, aunque aparentemente se

    invoque a las mismas variables no lo son, excepto por su identificador que es igual,

    lgicamente porque proceden de la misma superclase. En lo que se encuentra sombreado

    se est invocando las variables de la clase Estudiante, de esa manera accedemos al

    contenido de ellas.

    Lneas 35: ponga mucho nfasis en ella, primero con el objeto de la clase Estudiante se

    invoca al mtodo Estudiar que se encuentra en ella, lo nuevo aqu es el argumento que

    enviamos, es este caso lo que se enva es un objeto de la clase Profesor, ese luego pasa a

    almacenarse en el parmetro del mtodo, para que luego este ltimo pase a utilizar como

    instancia.

    Lnea 36: la idea de la explicacin de la lnea anterior aplica en esta, pero ahora se trabaja

    con un mtodo de la clase Profesor y se enva como argumento una instancia de la clase

    Estudiante, ya que eso es lo que el mtodo espera.