Entendiendo la herencia con un ejemplo

En esta guía de ayuda nos disponemos a repasar temas fundamentales en la programación orientada a objetos como lo es la Herencia. Para tal fin, vamos a crear un programa en el entorno de desarrollo Netbeans.

Para comenzar, vamos a definir que es la herencia, aquí voy a dar una definición coloquial, es decir que voy a definir esto con mis palabras.

-¿Qué es la herencia? à La herencia se utiliza con el fin de ahorrar líneas de código, si en una clase voy a utilizar lo mismo que utilice en otra clase, pues entonces en vez de copiarlo nuevamente, la extiendo y listo, eso es todo.

La estructura es muy sencilla, simplemente la clase a la cual vamos a copiar el código que ya está escrito en otra le agregamos la palabra extend y luego el nombre de la clase de la cual se extiende.

Ahora sí, vamos a pensar como programadores, supongamos que de la empresa EnlaceDieselTronic nos contrataron para realizar un software sencillo que en su primera etapa debe mostrarles el nombre de los empleados, la edad, el cargo y el horario de trabajo. Nosotros como programadores arriesgados, decidimos desarrollarlo en el lenguaje de programación Java, para desarrollarlo en ese lenguaje necesitamos un entorno de desarrollo apto para este, y nos decidimos por Netbeans.

Teniendo instalado Java y Netbeans en nuestro equipo, nos disponemos a comenzar el proyecto.

Lo primero que debemos hacer es crear un nuevo proyecto en Netbeans, para eso vamos a la pestaña file y luego en New Project.

therencia1

En la pestaña New project seleccionamos la opción Java application y esta a su vez nos arrojará a una nueva ventana.

therencia2

En esa nueva ventana ponemos el nombre con el cual queremos bautizar al proyecto, la ruta en donde queremos almacenarlo, y le damos finish para finalizar la creación.

therencia3

Ahora, ya con el proyecto creado en Netbeans, es nuestra labor comenzar con el proyecto. Para eso crearemos 3 clases, 1 principal llamada MAIN que es la que va a ejecutar el proyecto, 2 secundarias llamadas PERSONA y EMPLEADO.

Para eso damos clic derecho en el paquete en donde está guardado el proyecto, luego en New, y por último en Java Class.

therencia4

Aquí ya nos disponemos a nombrar las clases que vamos a crear, recordemos que son la clase Persona y la clase Empleado.

therencia5

Lo primero que vamos a hacer es crearle atributos a la clase persona, que será la clase básica para el proyecto que le vamos a desarrollar a EnlaceDieselTronic.

La clase Persona será una clase padre, de esta heredará la clase Empleado. Por consiguiente, los atributos de la clase persona deberán ser usados en la clase Empleado.

therencia6

Como ya declaramos los atributos Nombre y Edad que son los más generales para una clase padre, nos disponemos a generar el constructor para inicializar estos datos.

therencia7 Generado el constructor, vamos a retornar un mensaje con los atributos anteriormente generados. therencia8

Ahora, nos disponemos a crear la clase empleado, en esta clase necesitamos el atributo Nombre, Edad y Cargo, aquí viene el sentido que tiene la Herencia, ¿Qué sentido tiene que en la clase empleado creemos el atributo Nombre y Edad sabiendo que en la clase básica ya los tiene declarados?, este es el sentido que tiene la Herencia, ahorrar líneas de código.

En la siguiente imagen mostramos cual es la estructura que se debe seguir para aplicar la herencia.

therencia9

Valga la pena aclarar que el error que aquí aparece es debido a que todavía no hemos declarado el constructor.

Ya declarado el constructor y agregados los atributos Cargo y Horario que necesitamos añadir, debería quedar así:

therencia10

Ahora nos falta el mensaje que vamos a retornar, debemos tener en cuenta que en la clase Persona ya teníamos un mensaje, y ese mismo debemos añadirlo al que vamos a crear aquí:

therencia11

Aquí comenzamos con un concepto antiguo y un nuevo concepto, el this y el super. El this es un apuntador al dato mismo donde este. Por esto, cuando ponemos el <this.Cargo = Cargo> o el <this.Horario = Horario> estamos apuntando a los atributos Cargo y Horario en donde estén de la clase.

Ahora, el Super lo utilizamos cuando una clase herede de otra, y en la primera (Clase hija) defina un método que ya está definido en la segunda (Clase madre). El Super nos sirve para indicar que nos referimos al método de la clase Madre.

Ya entendido el Super y el This, y terminadas ambas clases, nos disponemos a crear el Main, lo más sencillo por desarrollar.

Aquí creamos el objeto Empleado, no tenemos necesidad de crear el Objeto para la Clase Persona, pues los parámetros que allí tenemos están incluidos en la Clase Empleado.

therencia12

Aquí vemos que nos arroja un error, esto se debe a que no le estamos enviado parámetros.

therencia13

Ya al enviarle parámetros el error desaparece.

Lo único que nos falta para finalizar el programa es imprimir el mensaje.

therencia14

Aquí en la impresión del mensaje, lo que hacemos es poner la referencia de la clase Empleado que es donde está el mensaje completo (Vale la pena recordad que en la clase Persona también retornamos un mensaje, pero este lo estamos invocando desde la clase Empleado y lo estamos añadiendo al que allí pensamos retornar).

El resultado de la ejecución del programa es el siguiente:

therencia15

Listo, hemos terminado nuestra aplicación orientada a objetos y aplicando correctamente el concepto de herencia.

Espero que este tutorial un poco más práctico les haya sido de mas ayuda, recuerda “la práctica hace la perfección”, también si quieres aprender mas sobre el tema te invito a que veas este post.

Escríbeme si tienes alguna duda y no olvides si te ha gustado este tutorial compartelo!

Copyrights © 2018 Sebastian Gomez. All Rights Reserved.

Sobre mí

sebastianMi nombre es Sebastián Gómez, soy ingeniero de sistemas e Informática y Magister en Ingeniería de Sistemas de la Universidad Nacional de Colombia.

Actualmente trabajo en Globant como Web UI Developer con énfasis en aplicaciones híbridas y cross compiladas. Soy el organizador del Google Developers Group de Medellín, así que contactame si quieres dar alguna charla o participar actuamente de esta comunidad.

He participado en una Startup Colombiana llamada SponzorMe al lado de Carlos Rojas y fuí participante de Startup Chile a pesar de no haber continuado con esta startup me apasiona el emprendimiento y me gusta aconsejar y ayudar startups como mentor técnico. También he trabajado en empresas Americanas como StudioHyperset en Estados Unidos y para Measured Medium. Mi interés y mi experiencia es el desarrollo de web y móvil full stack como Front-end con Javascript. Me apasiona desarrollar software, escribir código y enseñar lo que aprendo día a día.

También he trabajado como profesor en diferentes universidades en Medellín Colombia, con tematicas relacionadas con la Inteligencia Artificial, Bases de datos, programación orientada a objetos, minería de datos, desarrollo de software, desarrollo móvil y desarrollo web.

Me encanta escribir código rápido y prototipar de una manera accelerada si quieres ver que hago día a día puedes darle un vistazo a mi codepen:  https://codepen.io/seagomezar/.

Todos los días trato de crear o participar en proyectos, la mayoría open source, así que puede chequear mi GitHub:  https://github.com/seagomezar.

Mi áreas de investigación académica son: Ingeniería de software, Ingeniería de requisitos, procesamiento del lenguaje natural, Ontologías, Bases De Datos,  Machine Learning, Seguimiento de trayectorias y Modelamiento matemático de formaciones.

Estas son algunas de mis publicaciones académicas mas recientes: