Herencia y polimorrfismo

Solo disponible en BuenasTareas
  • Páginas : 22 (5473 palabras )
  • Descarga(s) : 0
  • Publicado : 8 de mayo de 2011
Leer documento completo
Vista previa del texto
Unidad V Herencia
5.1 Herencia
Es una forma de reutilización de software, en la cual para crear una nueva clase se absorben los miembros de una clase existente y se mejoran con capacidades nuevas o modificadas.

Al crear una clase, en lugar de declarar miembros completamente nuevos, puede hacer que la nueva clase herede los miembros de una ya existente. La clase existente se llama clase base,y la clase nueva es la clase derivada. La clase derivada, hereda todos los métodos, propiedades y atributos de la clase base. De hecho y aunque no se indique explícitamente, todas las clases derivan de la clase Object, por lo que heredan algunos métodos como GetType() y ToString().

Ejemplos:

|Clase base |Clase derivada|
|Estudiante |Estudiante Graduado, Estudiante No Graduado |
|Figura |Circulo, Triangulo, Rectángulo |
|Préstamo |Préstamo Auto, Préstamo Hogar, Préstamo Hipotecario ||Empleado |Docente, Administrativo, Trabajador Por Horas, Trabajador Por Comisión |
|Cuenta Banco |Cuenta Cheques, Cuenta Ahorro |

Las relaciones de herencia forman estructuras jerárquicas similares a los árboles. Una clase base existe en una relación jerárquica con sus clasesderivadas.

Ahora desarrollaremos una jerarquía de clases simple, también llamada jerarquía de herencia. El siguiente diagrama de clases de UML muestra una comunidad universitaria que tiene muchos tipos de miembros.
[pic]

Sin embargo, esto no significa que la clase derivada tenga automáticamente acceso a todo lo que hereda de la clase base, pues prevalece el efecto de los modificadores deacceso:

Private. Acceso a los elementos sólo desde su misma clase.

Protected. Acceso a los elementos desde su misma clase y desde cualquier clase derivada directa o indirectamente dentro de la jerarquía.

Public. Acceso a los elementos desde cualquier clase.
5.2 Representación y sintaxis de la herencia.

[pic]

En C#, una clase sólo puede heredar de una sola clase base, es decir, noexiste la herencia múltiple (que ocurre cuando una clase se deriva de más de una clase base). Sin embargo, una clase puede servir como base para derivar múltiples clases, con lo que puede formarse una jerarquía de clases tan extensa como se requiera.
Ejemplo:
[pic]

5.2.1 Ejemplo de Herencia
Suponga que se desea manejar información acerca de los empleados de una empresa. Se sabe que los empleadosse dividen en Empleados Fijos y Empleados a Honorarios.
Los Empleados fijos cuentan con ventas realizadas y tarifa de la comisión, por su parte los empleados a honorarios cuentan con un valor por hora y un número de horas trabajadas. Independiente del tipo de empleado que se trate cada uno de ellos, tiene un nombre, un número de empleado y una ciudad de residencia.

- Se tienen tres clasesdefinidas

- Aquí se resalta la información repetida, que es común a todos los elementos. Observe que la mayor parte de los atributos y métodos es similar en estos tres objetos.

- Una solución para ahorrar tiempo y esfuerzo sería copiar todo el código de la clase Empleado y pegarlo en las definiciones de las clases Empleado Fijo y Empleado Honorario, para después modificar estas clases alincluir ventas, tarifas_comisión, valor_hora y número horas, respectivamente, así como propiedades para manipular estos atributos. Sin embargo este método de “copiar y pegar” está propenso a propagar errores.

- Otra solución más elegante y correcta es utilizar la herencia. Así la clase base será Empleado y las clases derivadas Empleado Fijo y Empleado Honorario, como se muestra a continuación:...
tracking img