Hola Te saludo nuevamente.
Ubaldo Acosta espero que estén listos para comenzar con esta elección.
Vamos a estudiar a continuación el tema de herencia en Java están listos.
Vamos
concepto de herencia en esta elección vamos a estudiar el concepto de herencia.
Una de las formas en que entendemos la herencia son las características que se mantienen de generación
en generación en una familia.
Por ejemplo los abuelos tenían cabello rubio y uno de los hijos hereda esta característica a su vez
el hijo tiene otro hijo que también hereda este cabello rubio por otro lado los mismos abuelos pudieron
haber tenido una hija con cabello castaño y lacio y los nietos pueden heredar también esta misma característica
de tener el cabello castaño y lacio en la programación orientada a objetos.
El concepto de herencia es muy similar.
Definiremos una jerarquía de clases que nos permitirán heredar características entre clases padre e
hijas.
Veamos a continuación algunas características particulares de IAVA herencia en Java.
La herencia es uno de los conceptos más importantes en la programación orientada a objetos o mencionaremos
algunas de las razones más importantes por las cuales aplicaremos este concepto en el diseño de nuestras
clases.
La herencia nos permitirá representar un comportamiento en común evitar duplicación de código también
la herencia es una característica de la programación orientada a objetos y también esta característica
nos permitirá diseñar clases más parecidas al mundo real.
De esta manera la herencia nos permitirá representar características o comportamiento común entre clases
permitiendo definir en la clase padre los atributos o métodos que sean comunes a las clases hijas las
cuales heredarán estos atributos o métodos definidos en la clase padre.
Lo anterior permite evitar duplicar el código entre la clase padre y las clases hijas por lo que cumplimos
con la reutilización de código que es uno de los principales objetivos de la programación orientada
a objetos si aplicamos el concepto de herencia podemos modelar de una manera más sencilla sistemas del
mundo real.
Si ya la definición de objetos es un gran aporte diseñar una jerarquía de clases nos facilitará aún
más el modelado de clases ejemplo de herencia en Java vamos a ver un ejemplo de herencia en Java.
Podemos observar una clase llamada persona la cual como cualquier persona tiene muchas características
pero nos vamos a enfocar a unas cuantas.
Una persona puede tener un nombre puede tener un género edad y una dirección vamos a capturar estas
características en cada uno de los atributos que corresponden en la clase.
Puede tener muchos más pero nos vamos a enfocar en estos para simplificar el ejemplo.
Por otro lado si estamos tratando de modelar un sistema de ventas podríamos tener algunas variantes
de una persona en nuestro sistema.
Por ejemplo la clase empleado y la clase cliente y podemos observar en nuestro diagrama que se utiliza
la palabra extensive para indicar que la clase empleado hereda de la clase padre persona.
De igual manera la clase cliente es una clase hija de la clase persona.
A diferencia de una simple persona un empleado tiene sueldo un empleado también puede tener un Heydi.
Por ello el atributo de Heydi empleado el cual es único para cada empleado y la clase empleado tienen
los métodos para cada atributo creado en esta clase.
Por ejemplo los métodos Goeth hoy día empleado y el método jet set para el atributo de sueldo.
Por otro lado podemos tener un cliente que se registra en el sistema de ventas este cliente puede tener
como atributos un identificador una cliente.
También podemos tener una fecha de alta o registro y también podemos indicar si es un cliente especial
o VIP.
Para tales casos asignamos las variables descritas en la clase cliente así como los métodos respectivos.
En este ejemplo no estamos indicando cómo concluimos y cómo llegamos al diseño de estas clases.
Sin embargo el proceso general es identificar los actores es decir las entidades que generalmente serán
nuestras clases e identificar cómo interactúan estas entidades en nuestro sistema y a partir de las
necesidades de nuestro sistema podemos ir anotando cuáles son las características es decir atributos
y cuál es la funcionalidad es decir métodos que debe de tener cada entidad que estemos analizando.
Una vez que se han encontrado estas entidades con sus atributos y métodos vemos y existen características
o funcionalidad en común y ahí es precisamente como llegamos a este tipo de diseños.
Podemos observar que la clase persona es la clase padre y que las clases empleado y cliente extienden
de la clase persona es decir que van a heredar las características de la clase persona esto permite
que no tengamos que repetir el código ya definido en la clase persona y una vez que creamos un objeto
de tipo empleado o cliente en automático también tendrá las características de la clase persona.
En la siguiente lámina veremos un ejemplo más visual de esto ejemplo de herencia en Java
en la lámina podemos observar del lado izquierdo la definición de dos clases con herencia este es una
forma en que podemos imaginar visualmente lo que ocurre con la definición de una clase.
Una vez que manejamos el concepto de herencia según el diagrama de clases que mostramos en la lámina
anterior la clase de persona tiene varios atributos privados y varios métodos también que son públicos
como se observa.
Sin embargo los atributos privados no se heredan ya que precisamente son privados y pertenecen únicamente
a la clase donde se definen.
Sin embargo lo que sí se hereda en este caso son los métodos públicos.
Por ello estos métodos en automático pasan a ser parte también de la clase empleado.
Así que un objeto empleado puede utilizar tanto los métodos públicos de la clase persona así como los
métodos definidos dentro de su misma clase de tipo empleado.
Por ello el objeto creado de tipo empleado contiene los métodos de la clase persona que son heredados
como el nombre el nombre del género etc. Pero además contiene sus propios métodos como son hoy empleado
el sueldo el sueldo etc. Y este es el objeto completo de tipo empleado el cual hereda características
de la clase persona así que los atributos privados de la clase persona no se heredan.
Sin embargo los métodos públicos de la clase persona sí se heredan a la clase empleado.
Debemos notar que lo que restringe la herencia en Java son los modificadores de acceso.
Por lo tanto debemos poner particular atención en el tipo de modificador de acceso que tiene el atributo
o el método ya que de esto depende que se hereden o no los atributos o métodos recordemos que son cuatro
modificadores de acceso en total.
Pero por ahora estamos simplificando únicamente a dos.
Es decir pruebe y públic en un curso posterior vamos a ver a detalle cada uno de esos atributos y cuáles
son los que se heredan y cuáles no. En resumen cuando visualicemos una clase que hereda de otra podemos
imaginarnos a esta clase como el conjunto de sus propios atributos y métodos así como la suma de los
atributos o métodos heredables de la clase o clases padre ya que puede recibir herencia de una clase
padre o de una clase abuelo es decir una clase padre de su propia clase padre.