Herencia
Los objetivos de este nuevo capitulo será:
¿Qué es la herencia?
Seguramente, al haber leído la palabra herencia, te habrá venido a la mente lo que sucede con una persona que puede heredar algunos rasgos físicos o personales de sus padres o abuelos. La herencia es la característica por la cual los padres transmiten algunas características a sus hijos. Del mismo modo que en biología, en el plano económico, una persona le puede heredar sus bienes a otra persona, es decir que se los puede traspasar a otra persona por medio de una relación de jerarquía.
Pasando a nuestra materia, te presentamos un ejemplo de lo que sería la herencia, partiendo de la clase Persona que definimos en capitulos anteriores.
Recordemos cómo está definida la clase Persona.
Ahora bien, proponemos que pienses qué agregados deberías hacer si queremos, además, que nuestro programa registre la información de un alumno.
Seguramente habrás pensado que un alumno tiene un nombre, una edad y algún dato propio por ser alumno, por ejemplo, la matrícula. Esto se debe a que un alumno, ante todo, es una persona y luego tiene datos y comportamientos propios que le corresponde por ser un alumno. De esta manera, podemos decir que un alumno debe tener todos los atributos de una persona (ya que es una persona) y, además, agregar atributos propios.
¿Cómo resolvemos esto sin tener que repetir todo lo de una persona en un alumno?
Es en este momento donde deberás hacer uso de la herencia. Es así como nuestra nueva clase quedaría con el siguiente modelo.
Como habrás notado, utilizamos la herencia para transmitir los datos y atributos de una clase a otra. De esta manera podemos decir que :
La herencia es una propiedad esencial de la Programación Orientada a Objetos que consiste en la creación de nuevas clases a partir de otras ya existentes.
Subclases y superclases
En nuestro ejemplo, la clase Persona es una Superclase de la clase Alumno. Y del mismo modo, la clase Alumno es una subclase de la clase Persona.
Un lenguaje orientado a objetos permite heredar a las clases características y conductas, es decir los atributos y métodos, de una o varias clases denominadas superclases, clases bases o padres. A las clases que heredan de otras clases se las denominan subclases, clases derivadas o hijas. Las clases derivadas, a su vez, pueden ser clases bases para otras clases derivadas. De esta manera podrás establecer una clasificación jerárquica similar a la existente en Biología con los animales y plantas.
La herencia te permitirá lograr una de las principales características de la programación, que es la reutilización de código.
Una vez que una clase ha sido probada, el código fuente de dicha clase no necesita modificarse. Su funcionalidad se puede cambiar derivando una nueva clase que herede la funcionalidad de la clase base y le añada otros comportamientos. De esta manera podrás reutilizar el código existente, ahorrando tiempo y dinero, ya que solamente tendrás que verificar la nueva conducta que proporciona la clase derivada.
Sintetizando...
La herencia es un mecanismo mediante el cual una clase hereda todo el comportamiento y atributos de otra clase. La clase que hereda se denomina clase hija, clase derivada o subclase. La clase que provee la herencia se llama clase padre, base, o superclase.
La herencia está dada por la relación "es un".
Un ejemplo de herencia:
Veamos cómo implementamos nuestro ejemplo de herencia en pseudocódigo.
En la definición de la clase Alumno, se encuentra la palabra reservada extiende para especificar que es una clase que hereda de la clase Persona.
Clase Alumno extiende de Persona.
Si observas el algoritmo principal verás que ahora se crea un objeto de la clase Alumno. Lo primero que se hace es invocar al método Obtener.
¿Qué ocurre entonces? Se ejecuta el método Obtener de la clase Alumno, que realiza la siguiente acción: Super.Obtener(). En esta llamada se encuentra la palabra super que se utiliza para invocar a los métodos de la clase base.
Este mensaje invoca al método Obtener de la clase Base (en nuestro ejemplo, la clase Persona). Luego se ingresan los datos propios del alumno, en este caso, la matrícula.
Esto es la característica fundamental de la herencia, que logra la reutilización de código y la abstracción, ya que los detalles de implementación de la obtención de los datos de la persona quedan en la clase Persona.
La clase Alumno implementa los detalles propios de un alumno, de esta forma se logra la abstracción en cada una de las clases.
Hasta el proximo capitulo!
Los objetivos de este nuevo capitulo será:
- Definir la herencia y sus funciones.
- Diferenciar herencia de composición.
¿Qué es la herencia?
Seguramente, al haber leído la palabra herencia, te habrá venido a la mente lo que sucede con una persona que puede heredar algunos rasgos físicos o personales de sus padres o abuelos. La herencia es la característica por la cual los padres transmiten algunas características a sus hijos. Del mismo modo que en biología, en el plano económico, una persona le puede heredar sus bienes a otra persona, es decir que se los puede traspasar a otra persona por medio de una relación de jerarquía.
Pasando a nuestra materia, te presentamos un ejemplo de lo que sería la herencia, partiendo de la clase Persona que definimos en capitulos anteriores.
Recordemos cómo está definida la clase Persona.
Ahora bien, proponemos que pienses qué agregados deberías hacer si queremos, además, que nuestro programa registre la información de un alumno.
Seguramente habrás pensado que un alumno tiene un nombre, una edad y algún dato propio por ser alumno, por ejemplo, la matrícula. Esto se debe a que un alumno, ante todo, es una persona y luego tiene datos y comportamientos propios que le corresponde por ser un alumno. De esta manera, podemos decir que un alumno debe tener todos los atributos de una persona (ya que es una persona) y, además, agregar atributos propios.
¿Cómo resolvemos esto sin tener que repetir todo lo de una persona en un alumno?
Es en este momento donde deberás hacer uso de la herencia. Es así como nuestra nueva clase quedaría con el siguiente modelo.
Como habrás notado, utilizamos la herencia para transmitir los datos y atributos de una clase a otra. De esta manera podemos decir que :
La herencia es una propiedad esencial de la Programación Orientada a Objetos que consiste en la creación de nuevas clases a partir de otras ya existentes.
Subclases y superclases
En nuestro ejemplo, la clase Persona es una Superclase de la clase Alumno. Y del mismo modo, la clase Alumno es una subclase de la clase Persona.
Un lenguaje orientado a objetos permite heredar a las clases características y conductas, es decir los atributos y métodos, de una o varias clases denominadas superclases, clases bases o padres. A las clases que heredan de otras clases se las denominan subclases, clases derivadas o hijas. Las clases derivadas, a su vez, pueden ser clases bases para otras clases derivadas. De esta manera podrás establecer una clasificación jerárquica similar a la existente en Biología con los animales y plantas.
La herencia te permitirá lograr una de las principales características de la programación, que es la reutilización de código.
Una vez que una clase ha sido probada, el código fuente de dicha clase no necesita modificarse. Su funcionalidad se puede cambiar derivando una nueva clase que herede la funcionalidad de la clase base y le añada otros comportamientos. De esta manera podrás reutilizar el código existente, ahorrando tiempo y dinero, ya que solamente tendrás que verificar la nueva conducta que proporciona la clase derivada.
Sintetizando...
La herencia es un mecanismo mediante el cual una clase hereda todo el comportamiento y atributos de otra clase. La clase que hereda se denomina clase hija, clase derivada o subclase. La clase que provee la herencia se llama clase padre, base, o superclase.
La herencia está dada por la relación "es un".
Un ejemplo de herencia:
Veamos cómo implementamos nuestro ejemplo de herencia en pseudocódigo.
En la definición de la clase Alumno, se encuentra la palabra reservada extiende para especificar que es una clase que hereda de la clase Persona.
Clase Alumno extiende de Persona.
Si observas el algoritmo principal verás que ahora se crea un objeto de la clase Alumno. Lo primero que se hace es invocar al método Obtener.
¿Qué ocurre entonces? Se ejecuta el método Obtener de la clase Alumno, que realiza la siguiente acción: Super.Obtener(). En esta llamada se encuentra la palabra super que se utiliza para invocar a los métodos de la clase base.
Este mensaje invoca al método Obtener de la clase Base (en nuestro ejemplo, la clase Persona). Luego se ingresan los datos propios del alumno, en este caso, la matrícula.
Esto es la característica fundamental de la herencia, que logra la reutilización de código y la abstracción, ya que los detalles de implementación de la obtención de los datos de la persona quedan en la clase Persona.
La clase Alumno implementa los detalles propios de un alumno, de esta forma se logra la abstracción en cada una de las clases.
Hasta el proximo capitulo!