Una de las principales propiedades de las clases es la herencia.
Esta propiedad nos permite crear nuevas clases a partir de clases existentes,
conservando las propiedades de la clase original y añadiendo otras nuevas.
Cada nueva clase obtenida mediante herencia se conoce
como clase derivada, y las clases a partir de las cuales se deriva, clases
base. Además, cada clase derivada puede usarse como clase base para obtener una
nueva clase derivada. Y cada clase derivada puede serlo de una o más clases
base. En este último caso hablaremos de derivación múltiple.
Esto nos permite crear una jerarquía de clases tan compleja
como sea necesario.
Bien, pero ¿que ventajas tiene derivar clases?
En realidad, ese es el principio de la programación
orientada a objetos. Esta propiedad nos permite encapsular diferentes partes de
cualquier objeto real o imaginario, y vincularlo con objetos más elaborados del
mismo tipo básico, que heredarán todas sus características. Lo veremos mejor
con un ejemplo.
Un ejemplo muy socorrido es de las personas. Supongamos que
nuestra clase base para clasificar a las personas en función de su profesión
sea "Persona". Presta especial atención a la palabra "clasificar",
es el punto de partida para buscar la solución de cualquier problema que se
pretenda resolver usando POO. Lo primero que debemos hacer es buscar
categorías, propiedades comunes y distintas que nos permitan clasificar los
objetos, y crear lo que después serán las clases de nuestro programa. Es muy
importante dedicar el tiempo y atención necesarios a esta tarea, de ello
dependerá la flexibilidad, reutilización y eficacia de nuestro programa.
Ten en cuenta que las jerarquías de clases se usan
especialmente en la resolución de problemas complejos, es difícil que tengas
que recurrir a ellas para resolver problemas sencillos.
Siguiendo con el ejemplo, partiremos de la clase
"Persona". Independientemente de la profesión, todas las personas tienen
propiedades comunes, nombre, fecha de nacimiento, género, estado civil, etc.
Jerarquía de clases para Persona
La siguiente clasificación debe ser menos general,
supongamos que dividimos a todas las personas en dos grandes clases: empleados
y estudiantes. (Dejaremos de lado, de momento, a los estudiantes que además
trabajan). Lo importante es decidir qué propiedades que no hemos incluido en la
clase "Persona" son exclusivas de los empleados y de los estudiantes.
Por ejemplo, los ingresos por nómina son exclusivos de los empleados, la nota
media del curso, es exclusiva de los estudiantes. Una vez hecho eso crearemos
dos clases derivadas de Persona: "Empleado" y "Estudiante".
EJEMPLO DE HERENCIA:
#include <iostream> using namespace std; class base { int i, j; public: void set(int a, int b) { i = a; j = b; } void mostrar() { cout << i << " " << j << "\n"; } }; class derivada : public base { int k; public: derivada(int x) { k = x; } void mostrar_k() { cout << k << "\n"; } }; int main() { derivada obj(3); obj.set(1, 2); // accesar a miembro de base obj.mostrar(); // accesar a miembro de base obj.mostrar_k(); // usa miembro de la clase derivada return 0; }
PARA VER EL FUNCIONAMIENTO DEL PROGRAMA DE EJEMPLO, DIRIGIRSE A ESTE ENLACE DONDE COPIE Y PEGUE EL EJEMPLO .
- http://cpp.sh/
FUENTE DE CONSULTA:
- https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C%2B%2B/Herencia
- http://c.conclase.net/curso/?cap=036
No hay comentarios:
Publicar un comentario