8 1
Facultad: Ingeniera
Escuela: Computacin
Asignatura: Programacin II
Objetivos
Materiales y Equipo
Introduccin Terica
La Herencia.
Es la capacidad de compartir atributos y mtodos entre clases.
Es la propiedad que permite definir nuevas clases usando como base clases ya existentes.
La nueva clase (clase derivada) hereda los atributos y comportamiento que son especficos de
la clase existente.
La herencia es una herramienta poderosa que proporciona un marco adecuado para producir
software fiable, comprensible, de bajo costo, adaptable y reutilizable.
La herencia o relacin es-un es la relacin que existe entre dos clases, en la que una clase
denominada derivada o subclase se crea a partir de otra ya existente, denominada clase
base o superclase.
2 Programacin II. Gua No. 9
Evidentemente, la clase base y la clase derivada tienen cdigo y datos comunes, de modo que
si se crea la clase derivada de modo independiente, se duplicara mucho de lo que ya se ha
escrito para la clase base.
C# soporta el mecanismo de derivacin que permite crear clases derivadas, de modo que la
nueva clase hereda todos los datos miembro que pertenecen a la clase ya existente.
Tipos de Herencia.
Dependiendo del nmero de clases y de cmo se relacionen, la herencia puede ser:
a) Simple.
b) Mltiple.
c) De niveles mltiples.
Con independencia del tipo de herencia, una clase derivada no puede acceder a variables y
funciones privadas de su clase base. Para ocultar los detalles de la clase base y de clases y
funciones externas a la jerarqua de clases, una clase base utiliza normalmente elementos
protegidos en lugar de elementos privados.
Herencia Simple.
Cuando slo se tiene una clase base de la cual hereda la clase derivada, se dice que hay
herencia simple (ver Figura 1.a).
Sin embargo, la herencia simple no excluye la posibilidad de que de una misma clase base se
pueda derivar ms de una subclase o clase derivada (Figura 1.b).
(a) (b)
Figura 1. Herencia Simple.
Programacin II. Gua No. 9 3
Persona Mamfero
(a) (b)
Figura 2. Ejemplos de Herencia Simple.
En la figura 2a, la clase Persona es la clase base y Empleado es la clase derivada. Un objeto
de esta clase tambin es un objeto de la clase Persona, por lo tanto tendr los atributos y
mtodos de ambas clases.
En la figura 2b, la clase Mamfero es la clase base y Vacuno y Equino son las clases
derivadas. En este caso, se dice que todo Vacuno y todo Equino tambin son objetos de la
clase Mamfero y en consecuencia tendrn todos los atributos y mtodos que heredan de la
clase base.
Los miembros protegidos de la clase base podrn ser usados por los mtodos de las clases
derivadas, pero no por sus clientes.
Los miembros pblicos estarn disponibles para los mtodos de las clases derivadas y para
todos sus clientes.
class Base
{ private:
// Miembros declarados en la seccin privada: accesibles slo para miembros de esta clase
protected:
/* Miembros declarados en la seccin protegida: accesibles slo para miembros de esta
clase y de sus derivadas */
4 Programacin II. Gua No. 9
public:
// Miembros declarados en la seccin pblica: accesibles para todos
};
Para declarar una clase derivada de una clase previamente definida se utiliza la siguiente
sintaxis:
class Base
{ // Declaracin de atributos y mtodos de la clase Base
};
// Relacin de herencia pblica entre las clases Base y Derivada
class Derivada :Base
{ // Declaracin de atributos y mtodos de la clase Derivada
};
Cuando se declara un objeto del tipo de la clase derivada se invoca al constructor de sta. De
este constructor lo primero que se ejecuta es la llamada al constructor de la clase base, y
posteriormente se ejecutan sus propias instrucciones.
En cuanto a los parmetros, al invocar al constructor de la clase base se le deben proporcionar
los parmetros que necesita para asignar valores a los atributos propios de la clase base y que
la clase derivada hereda.
En el cuerpo de la clase derivada se harn las asignaciones correspondientes a los atributos
propios de esta clase.
Clase Derivada
Clase Base
Clase Derivada
1.1
Este tipo de herencia es muy til cuando es necesario representar, a partir de conceptos
generales, conceptos ms especficos. Cuantos ms niveles se deriven, mas especificidad se
definir.
rbol
Frutal
Ctrico
Procedimiento
Ejemplo 1:
Bibliografa
Se muestra un ejemplo de Herencia simple. Se realiza la implementacin de la jerarqua
de clases mostrada en la siguiente figura:
Gua 1 Operacion
Suma Resta
Los valores son propiedad de la clase principal y cada clase derivada implementa un mtodo
llamado operar.
Clase OPERACION
Programacin II. Gua No. 9 7
Clase SUMA
Clase RESTA
Clase PROGRAM
8 Programacin II. Gua No. 9
Ejemplo 2:
Se muestra un ejemplo de Herencia simple. Se realiza la implementacin de la jerarqua
de clases mostrada en la siguiente figura:
Producto
Papeles Utensilios
La cual corresponde a una Papelera que maneja esos dos tipos de Productos, papeles y
utensilios, se reutilizan elementos comunes de la clase principal y se combinan con los
propios de cada clase derivada.
CLASE PRODUCTO
Programacin II. Gua No. 9 9
CLASE PAPELES
CLASE UTENSILIOS
10 Programacin II. Gua No. 9
CLASE PROGRAM
Ejemplo 3:
Trabajador
Secretaria
Para ello se define una clase Persona y se usa como clase base para definir la clase
Trabajador, esta a su vez es clase base para Secretaria. Los objetos que sean del tipo
Programacin II. Gua No. 9 11
Secretaria tendrn los atributos de esta clase (por ejemplo Salario), adems de los atributos
heredados de la clase Persona.
Clase PERSONA
Clase TRABAJADOR
Clase SECRETARIA
12 Programacin II. Gua No. 9
Clase PROGRAM
Anlisis de Resultados
Bibliografa
Ejercicio 1:
Por qu se puede tener el mtodo calcular en las dos clases derivadas? Qu ocurre si
Gua
declaro 1
el mtodo en la clase principal? Explicar el por qu
Ejercicio 2:
Modifique el ejemplo 3 de forma que se puedan ingresar los datos de la secretaria y que se le
pueda aumentar dependiendo del salario actual o de los aos laborados. Aumento si salario es
menor o igual a 400, tambin hay aumento si tiene ms de 4 aos laborados.
Programacin II. Gua No. 9 13
Ejercicio 3:
Construya una solucin para la jerarqua de clases mostrada en la siguiente figura:
Persona
Empleado Estudiante
Universitario
Ingeniera
Para la clase Estudiante considerar los atributos: nmero de carnet, nivel de estudios.
Para la clase Universitario considerar los atributos: nombre de la universidad, carrera, materias
inscritas, notas, CUM.
Para la clase Ingeniera considerar los atributos: nombre del proyecto, total de horas (duracin
de la pasanta), nmero de horas completadas.
La solucin se debe manejar a travs de un men que permita realizar las siguientes acciones:
a) Crear los objetos de tipo Ingeniera, solicitando los datos al usuario.
b) Verificar que universidad proporciona la mayora de estudiantes de ingeniera
c) Visualizar el promedio de notas de los estudiantes
d) Salir de la aplicacin.
El men deber estar siempre activo, en la misma posicin en pantalla, hasta que el usuario
seleccione la opcin salir.
El programa debe estar debidamente comentado.
14 Programacin II. Gua No. 9
Investigacin Complementaria
Ejercicio 1:
Gua 3
Considere la siguiente jerarqua de herencias del transporte disponible que tiene una
Compaa turstica:
Gua 4
fa Vehiculo
Definir las clases. Decidir que atributos y mtodos incluir en cada clase de tal manera que su
programa pueda a travs de un men realizar como mnimo las siguientes acciones:
a) Crear objetos de cualquier tipo de las clases finales (carro, helicptero, crucero),
solicitando los datos al usuario.
b) Verificar que opciones de transporte terrestre se tienen para la realizacin de un viaje
de fin de semana.
c) Reservar un vehculo y si estuviera ocupado, enviarme un mensaje de que no est
disponible.
d) Salir de la aplicacin.
La compaa solo cuenta con 1 helicptero, 2 lanchas y 10 carros. El men deber estar
siempre activo, en la misma posicin en pantalla, hasta que el usuario seleccione la opcin
salir. El programa debe estar debidamente comentado.
Ejercicio 2:
Investigue cmo pueden ser mejorados los ejercicios de esta gua por medio de virtual,
abstract, override e implemente cambios en al menos uno de ellos, utilizando cualquiera de
esos elementos.