guia-7

18
 1 UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION CICLO: 02  / 2014 GUIA DE LABORATORIO #07 Nombre de la Practica: Programación Orientada a Objetos, Implementació n d e Herencia Lugar de Ejecución: Centro de Computo  Tiempo Estimado: 2 horas y 30 minutos  Materia: Lenguajes de Programac ión 1 I. OBJETIVOS Que el estudiante sea capaz de:  Evaluar cuando utilizar la Herencia de Objetos dentro de los requerimientos de un Programa  Implement ar la Herencia gracias a la c reación de Clases Principales y Clases Derivadas  Implementar correctamente el principio del Polimorfismo  Ejemplificar la elaboración de las clases y su imp lementación en objet os II. INTRODUCCI ON TEORICA HERENCIA Y POLIMORFISMO El manejo de propiedades, métodos y eventos es sólo el principio de la programación orientada a objetos; las características principales de la POO descansan en la capacidad de los objetos para trabajar en colaboración con otros objetos, y de aprovechar total o parcialmente su funcionalidad mediante la reutilización de código según lo requieran las aplicaciones. A continuación se estudiará los principios que permiten el máximo aprovechamiento del código a través de POO y con sus dos capacidades características: herencia y polimorfism o. Herencia La herencia (inheritance) es un concepto fundamental de la programación orientada a objetos, y consiste en la capacidad de definir clases que sirven como base de otras clases, evitando la redundancia en la definición de elementos como métodos, eventos y propiedades. Hay una clase base y una o varias clases derivadas; las clases derivadas aprovechan todo lo declarado en la clase base, asumiéndolo como suyo y utilizando capacidades que no están codificadas en ellas. Las clases derivadas pueden heredar, e incluso extender, las propiedades, los métodos y los eventos de la clase base. Es posible también que las clases derivadas sustituyan o modifiquen (override) la funcionalidad de los métodos de la clase base.

Upload: alexgonzalez

Post on 08-Oct-2015

32 views

Category:

Documents


0 download

DESCRIPTION

Guia 7 ..

TRANSCRIPT

  • 1

    UNIVERSIDAD DON BOSCO

    FACULTAD DE ESTUDIOS TECNOLGICOS

    ESCUELA DE COMPUTACION

    CICLO: 02/ 2014

    GUIA DE LABORATORIO #07

    Nombre de la Practica: Programacin Orientada a Objetos, Implementacin de Herencia

    Lugar de Ejecucin: Centro de Computo

    Tiempo Estimado: 2 horas y 30 minutos

    Materia: Lenguajes de Programacin 1

    I. OBJETIVOS

    Que el estudiante sea capaz de:

    Evaluar cuando utilizar la Herencia de Objetos dentro de los requerimientos de un Programa

    Implementar la Herencia gracias a la creacin de Clases Principales y Clases Derivadas

    Implementar correctamente el principio del Polimorfismo

    Ejemplificar la elaboracin de las clases y su implementacin en objetos

    II. INTRODUCCION TEORICA

    HERENCIA Y POLIMORFISMO

    El manejo de propiedades, mtodos y eventos es slo el principio de la programacin orientada a objetos; las caractersticas principales de la POO descansan en la capacidad de los objetos para trabajar en colaboracin con otros objetos, y de aprovechar total o parcialmente su funcionalidad mediante la reutilizacin de cdigo segn lo requieran las aplicaciones.

    A continuacin se estudiar los principios que permiten el mximo aprovechamiento del cdigo a travs de POO y con sus dos capacidades caractersticas: herencia y polimorfismo.

    Herencia

    La herencia (inheritance) es un concepto fundamental de la programacin orientada a objetos, y consiste en la capacidad de definir clases que sirven como base de otras clases, evitando la redundancia en la definicin de elementos como mtodos, eventos y propiedades. Hay una clase base y una o varias clases derivadas; las clases derivadas aprovechan todo lo declarado en la clase base, asumindolo como suyo y utilizando capacidades que no estn codificadas en ellas.

    Las clases derivadas pueden heredar, e incluso extender, las propiedades, los mtodos y los eventos de la clase base. Es posible tambin que las clases derivadas sustituyan o modifiquen (override) la funcionalidad de los mtodos de la clase base.

  • Gua # 7: POO: Implementacin de Herencia

    Lenguajes de Programacin 1 2

    En Visual Basic, por omisin, todas las clases pueden heredarse.

    Las ventajas de la herencia son muchas, pero la principal es que el desarrollador tendr que escribir y depurar el cdigo slo una vez, para una clase, y disponer en muchas clases de la misma funcionalidad, estableciendo las referencias adecuadas.

    Cundo se debe utilizar la herencia?

    La herencia entre clases no debe utilizarse por el simple hecho de que el lenguaje lo permite. La herencia debe planearse; el desarrollador debe pensar cmo han de ser las clases, organizndolas en lo que se conoce como Jerarqua de clases.

    Se recomienda una jerarqua de clases cuando entre las clases se presenta una relacin de tipo Es-un (is - a); debe evitarse el uso de herencia cuando se trata de relaciones Tiene-un (has - a).

    Por ejemplo, una clase que contiene las caractersticas de los automviles en general (Automviles) tiene mucho que compartirle a una clase que almacena las particularidades de los automviles deportivos (AutomvilesDeportivos), pues un automvil deportivo, antes que ser de tipo deportivo, es un automvil (is-a). Ahora pregntese, qu comparte un dueo de un automvil y un automvil? Automviles y DueosAutomviles, no comparten rasgos. Las personas que poseen automviles no se derivan de los automviles, ni viceversa. Que una persona tenga un (has-a) automvil, no quiere decir que comparta con ste sus mtodos, propiedades y eventos. Imagnese tener que determinar el tipo de transmisin, nmero de puertas y nmero de serie que una persona posee. Simplemente, de una cosa no puede derivar la otra.

    Se recomienda una jerarqua de clases, obviamente, slo si el cdigo de una clase brinda alguna funcionalidad que se pueda reutilizar; tratar de heredar aspectos muy particulares que slo son pertinentes para una clase no tiene sentido.

    Inherits (Heredar)

    El estatuto Inherits se utiliza para especificar que una clase de nueva creacin tiene como base una clase ya existente. La clase nueva es la clase derivada (derived class); la clase ya existente es la clase base (base class).

    La sintaxis es la siguiente:

    Class NombreClaseDerivada

    Inherits NombreClaseBase

    End Class

    En este caso, la clase derivada dispone de todos los elementos declarados en la clase base.

  • Gua # 7: POO: Implementacin de Herencia

    Lenguajes de Programacin 1 3

    Notlnheritable (No heredable)

    Como ya se menciono, que por omisin todas las clases en Visual Basic pueden heredarse. Habrn ocasiones en que no queramos que una clase pueda heredarse; en tal caso, hay que especificar, al declarar una clase, que sta no es heredable. La sintaxis para ello es la siguiente:

    Notlnheritable Class NombreClase

    End Class

    En este caso, intentar heredar NombreClase generara un error (Inherits NombreClase).

    Mustlnherit (Debe heredar)

    Como sabemos, los objetos son instancias de una clase. Ya se explicaba que no se puede tener acceso a la funcionalidad de una clase sino a travs de una instancia de la misma, es decir, de un objeto basado en la clase. Eso es verdadero slo relativamente.

    Habr alguna forma de que podamos disponer de la funcionalidad de una clase sin generar una instancia de la misma?

    La respuesta es que s. Podemos declarar una clase que no pueda instanciarse pero que pueda ser utilizada slo si se hereda por otra clase. Para hacer eso es necesario especificar el estatuto Mustlnherit.

    La sintaxis es la siguiente:

    Mustlnherit Class NombreClase

    End Class

    En este caso, instanciar NombreClase generara error (Dim Objeto As New NombreClase())

    Modificadores de acceso, necesarios para la herencia.

    Usted debe determinar el alcance que tendr su jerarqua de clases, a efecto de restringir el acceso a las clases, de tal manera que slo puedan heredarlas aquellas porciones de cdigo que deban hacerlo.

    Calificar una clase como clase pblica (public class), se logra utilizando el modificador de acceso Public al momento de la declaracin de la clase. Esto garantiza que todas las clases podrn utilizar la clase todo el tiempo; en este caso, el acceso es abierto.

  • Gua # 7: POO: Implementacin de Herencia

    Lenguajes de Programacin 1 4

    Si no quiere una clase de acceso abierto, puede restringir el acceso a la clase utilizando los modificadores de acceso Friend y Private.

    Tome en cuenta que en una jerarqua de clases el acceso puede heredarse slo hacia un acceso igual o mayor, nunca menor: una clase con acceso Public no puede heredar una clase Friend o Private, y una clase Friend no puede heredar una Private.

    Estatutos auxiliares para el manejo de herencia y polimorfismo

    En ocasiones heredamos una clase, pero nos damos cuenta que algunas entidades (mtodos, propiedades, eventos) no se ajustan del todo a lo que verdaderamente necesitamos; en resumen, no nos sirven tal y como fueron heredadas. Es posible que pensemos que los elementos heredados son tiles, pero que lo seran ms con algunas pequeas modificaciones.

    Dichas modificaciones se realizan en la clase derivada, respecto de las definiciones originales existentes en la clase base.

    La programacin orientada a objetos hace posible que eso suceda, pues permite implementar diferentes comportamientos para un mtodo (override), o de plano remplazarlo por completo (overload). La funcionalidad heredada puede modificarse por otra que sea ms indicada para el problema de programacin que deseamos resolver; con ello se promueve que la reutilizacin del cdigo sea flexible y adaptable.

    Por omisin, una clase derivada hereda los mtodos y propiedades de su clase base. Si necesitamos que una propiedad o mtodo heredado se comporte de manera distinta a como se defini en la clase base, puede ser implementada de forma distinta (overridden) o remplazada (overloaded); esto quiere decir que la herencia sirve hasta donde nosotros deseamos comenzar a hacer modificaciones.

    Los estatutos auxiliares de herencia sirven para especificar el grado de modificacin que ha de darse entre la clase derivada y la clase base; estos son: Overridable, NotOverridable, Overrides. MustOverride y Overloads.

    En cuanto a la clase base hay tres escenarios:

  • Gua # 7: POO: Implementacin de Herencia

    Lenguajes de Programacin 1 5

    NotOverridable (No reemplazable)

    El primer escenario es que la clase base no acepte que su funcionalidad sea modifica sustituida. En ese caso, el estatuto NotOverridable evita que una propiedad o mtodo de una clase base pueda ser sustituido en una clase derivada. Por omisin, los mtodos pblicos en una clase base son NotOverridable.

    Overridable (Reemplazable)

    El segundo escenario es que la clase base admita modificaciones o sustituciones a su funcionalidad. El estatuto Overridable establece que una propiedad o mtodo (elemento) de clase base puede ser modificado en su implementacin o sustituido en una clase derivada.

    MustOverride (Debe reemplazarse)

    El tercer escenario es que la modificacin a la funcionalidad de la clase base no slo posible, sino que sea obligatoria. El estatuto MustOverride hace que sea obligatorio hacer variaciones, en la clase derivada, de las propiedades o mtodo de la clase base que han sido heredados.

    Del lado de la clase derivada hay dos escenarios, que slo son posibles si los elementos de la clase base permiten modificaciones en la funcionalidad.

    Overrides (Reemplaza)

    El primer escenario es cuando la clase base permite que su funcionalidad sea modifica respetando la estructura original del elemento modificado. El estatuto Overrides permite la variacin en la clase derivada, de sus propiedades o sus mtodos. Esto ser siempre y cuando se mantengan los mismos argumentos en el mtodo de la clase base y la clase derivada Overrides slo permite desarrollar en la clase derivada una implementacin distinta de un elemento de la clase base, y no su sustitucin por otro que no guarde semejanza.

    Overloads (Sobrecarga/Sustituye)

    El segundo escenario es que se desee sustituir la funcionalidad, sin necesidad de respetar estructuras o condiciones precedentes.

    En ocasiones, adems de modificar el comportamiento de los mtodos que participan en una relacin de herencia, es necesario hacer uso de diferentes argumentos, ya sea porque los que se tienen deben considerar otros tipos de datos, o bien, porque el mtodo que modifica al heredado de la clase base requiere una cantidad distinta de argumentos. En este caso, ya no hablamos de una implementacin distinta de lo mismo, sino de dos mtodos bastante distintos entre s que comparten un nombre.

  • Gua # 7: POO: Implementacin de Herencia

    Lenguajes de Programacin 1 6

    En este ltimo caso, Overrides no sirve pues exige igualdad de argumentos. Para poder lograr nuestro cometido, debemos utilizar Overloads, que indica la sustitucin del mtodo de la clase base por otro de la clase derivada, tengan o no relacin entre s. Overloads es la nica forma de implementar, bajo un mismo nombre, dos mtodos que no coinciden ms que en el nombre.

    MyBase y MyClass

    Se puede utilizar la palabra reservada MyBase para llamar a ejecucin a un mtodo de la clase base desde una clase derivada. Esto quiere decir que a) si existe herencia entre dos clases, y b) en la clase derivada se modifica un mtodo, entonces c) es posible mandar llamar a ejecucin al mtodo, ya sea en la forma en que se encuentra en la clase base, o en la forma en que se encuentra en la clase derivada misma.

    Con MyBase podemos obligar a la aplicacin a que utilice un mtodo de la clase base y no de la clase derivada; en caso contrario, es posible que queramos mandar llamar el mtodo tal y como est en la clase derivada. Para ello utilizamos la palabra reservada MyClass, que se encarga de llamar a ejecucin un mtodo que se encuentra en la misma clase cuando esta es derivada.

    Es importante saber que tanto MyBase como MyClass, aunque en su manejo parecen objetos, realmente no lo son. No se instancian; existen porque el lenguaje los proporciona para un manejo ms flexible de la herencia y el polimorfismo.

    Polimorfismo

    El polimorfismo es la habilidad que tiene el lenguaje para definir mltiples clases que contengan mtodos y propiedades del mismo nombre, pero que brindan diferente funcionalidad.

    Cuando se presenta el polimorfismo es posible elegir, en tiempo de ejecucin, aquellos mtodos o propiedades que necesitamos. No importa que varias clases posean los mismos mtodos y las mismas propiedades: la aplicacin debe ser capaz de utilizar precisamente aquellas cuya funcionalidad estemos invocando.

    La herencia y la sustitucin de mtodos y propiedades tienen mucho que ver con el polimorfismo. Cuando se declara una clase y a partir de sta se derivan otras clases, estamos ante la presencia de la herencia; si adems de esto, los mtodos y propiedades de la clase base que fueron heredados son modificados (Overriden) o sustituidos (Overloaded) en la clase derivada, de tal manera que comparten el mismo nombre pero no la misma funcionalidad, estamos ante el polimorfismo. Una manifestacin an ms pura del polimorfismos se presenta cuando se utiliza Overloads, que implica una sustitucin completa de meto que se encuentran en clases que guardan una relacin de herencia.

    Cuando en una clase derivada se modifican mtodos o propiedades de la clase base, se dice que hay polimorfismo basado en herencia.

  • Gua # 7: POO: Implementacin de Herencia

    Lenguajes de Programacin 1 7

    III. MATERIALES Y EQUIPO

    Para la realizacin de la gua de prctica se requerir lo siguiente:

    No. Requerimiento Cantidad

    1 Gua de Laboratorio 7 de LP1 1

    2 PC con Microsoft Visual Studio 2012 .NET instalado 1

    3 Memoria USB 1

    4 Computadora con acceso a Internet 1

    IV. PROCEDIMIENTO

    Para esta prctica deber crear una carpeta con el nombre de Guia7LP1_SuCarnet, en la cual va a guardar todos los archivos de esta prctica.

    Ejercicio 1. Uso de Herencia

    1. Abrir un nuevo proyecto en Visual Basic 2012

    2. Colocar como nombre del proyecto: Guia7Ejercicio1

    En este ejercicio la aplicacin debe calcular los descuentos y el sueldo neto de un empleado. Los datos que necesita son los siguientes: Nombre, sueldo base y horas extras, se conoce que el empleado puede laborar en cualquier turno ya sea maana o noche y las horas extras se pagan de acuerdo a ese turno (si es en la maana cada hora extra vale $10 y si el turno es en la noche cada hora extra vale $15), para calcular los descuentos debe tomar en cuenta que: Si el empleado trabaja en la maana este no tiene seguro de vida, solamente tiene seguro de vida aquel empleado que trabaja en la noche.

  • Gua # 7: POO: Implementacin de Herencia

    Lenguajes de Programacin 1 8

    Descuentos:

    Seguro=Sueldo base *10%

    Seguro de vida=Sueldo base *12%

    Sueldo Neto:

    Sueldo neto= (Sueldo base + horas extras * pago por hora) descuentos

    3. Crear el siguiente diseo del formulario del proyecto

    4. Cambiar las propiedades de los controles del formulario, as como se muestra en la siguiente tabla:

    Control Propiedades

    Name Text Font Enabled ReadOnly

    GroupBox1 Datos del Empleado

    Microsoft Sans Serif; Negrita; 9

    GroupBox2 Descuentos Microsoft Sans Serif; Negrita; 9

    GroupBox3 Turno Microsoft Sans Serif; Negrita; 9

    Label1 lblnombre Nombre:

    Label2 lblsueldobase Sueldo Base: $

    Label3 lblhorasextras Horas Extras:

    Label4 lblpagoporhora Pago por hora extra: $

    False

    Label5 lblseguro Seguro: $

  • Gua # 7: POO: Implementacin de Herencia

    Lenguajes de Programacin 1 9

    Label6 lblsegurovida Seguro de Vida: $

    Label7 lblsueldoneto Sueldo Neto: $ Microsoft Sans Serif; Negrita; 9

    TextBox1 txtnombre

    TextBox2 txtsueldobase

    TextBox3 txthorasextras

    TextBox4 txtpagoporhora

    TextBox5 txtseguro True

    TextBox6 txtsegurovida True

    Label8 txtsueldoneto 0.00 Microsoft Sans Serif; Negrita; 9

    False

    RadioButton1 turnomaana Maana

    RadioButton2 turnonoche Noche

    Button1 btncalcular Calcular Microsoft Sans Serif; Negrita; 9

    Button2 btnsalir Salir Microsoft Sans Serif; Negrita; 9

    5. Agregar al proyecto un modulo y colocarle como nombre: Empleado

    6. En el modulo Empleado, agregar la siguiente clase:

  • Gua # 7: POO: Implementacin de Herencia

    Lenguajes de Programacin 1 10

    7. Siempre en el modulo Empleado, agregar la siguiente clase:

    8. En el formulario, coloque el siguiente cdigo, a nivel de formulario:

    9. En el evento Load del formulario, coloque el siguiente cdigo:

  • Gua # 7: POO: Implementacin de Herencia

    Lenguajes de Programacin 1 11

    10. En el evento Click del botn btncalcular, coloque el siguiente cdigo:

    11. Haga doble clic en el primer control de RadioButton (turnomaana) y coloque el siguiente cdigo:

    12. Haga doble clic en el segundo control de RadioButton (turnonoche) y coloque el siguiente cdigo:

    13. En el evento Click del botn btnsalir, coloque el siguiente cdigo:

    14. Ejecute la aplicacin y realice las pruebas necesarias.

  • Gua # 7: POO: Implementacin de Herencia

    Lenguajes de Programacin 1 12

    Ejercicio complementario:

    1. Coloque las validaciones necesarias en cada una de las entradas de datos

    2. Modifique la aplicacin, de tal manera solo se tenga un mtodo descuentos, no importa si la clase 2 se queda sin mtodos, por el momento.

    3. Guardar los datos en un archivo de texto

    Ejercicio 2. Uso de Herencia y Polimorfismo

    1. Abrir un nuevo proyecto en Visual Basic 2012

    2. Colocar como nombre del proyecto: Guia7Ejercicio2

    Comprobacin del polimorfismo basado en herencia y el uso de MyBase

    En este ejercicio se comprobar el polimorfismo basado en herencia; para ello se definen varias clases, se heredarn unas con otras y se ver el uso de la palabra reservada MyBase.

    El programa calcular lo que se le pagar a los empleados, partiendo del supuesto que puede haber un pago normal, agregarse ms un bono por puntualidad del 25%, e incluso un bono adicional del 20%.

    3. Crear el siguiente diseo del formulario:

    4. Agregar un modulo al proyecto y tendr como nombre Module1.vb

  • Gua # 7: POO: Implementacin de Herencia

    Lenguajes de Programacin 1 13

    5. Edite el Module1.vb de tal forma que aparezca de la siguiente manera:

    6. Agregue una clase llamada pago, que ser pblica.

    7. Agregue un mtodo de nombre CalculaPago(), que ser pblico y que devolver un valor Decimal, dentro de este mtodo agregar el Modificador de herencia Overridable.

    8. En este punto, el cdigo del modulo debe lucir de la siguiente manera:

  • Gua # 7: POO: Implementacin de Herencia

    Lenguajes de Programacin 1 14

    9. Coloque como argumentos de CalculaPago() las horas trabajadas y el pago por hora. Complemente el mtodo, a fin de que proporcione un resultado. El procedimiento debe quedar de la siguiente manera:

    10. Agregue una clase llamada PagoBonificado, que ser pblica y que se agregara al mdulo que estamos trabajando. A esta clase agregue un mtodo de nombre CalculaPago(), que ser pblico y devolver un valor Decimal

    11. Edite el programa y agregue una lnea que especifique que la nueva clase hereda la funcionalidad de la clase Pago (Inherits Pago). Aqu se generara una contaminacin de espacios de nombres, dado que Pago ya posee un mtodo llamado CalculaPago(), y al estar heredando su funcionalidad, equivaldra a estar definiendo dos miembros con el mismo nombre, lo cual no es posible. Para evitar el problema, seleccione el mtodo CalculaPago () de PagoBonificado deber modificarse la propiedad Modificador de herencia asignando un valor Overrides. Dado que se est realizando una operacin de reemplazo (overrides), los argumentos del mtodo deben ser exactamente los mismos. La nica variante entre los dos procedimientos es que el mtodo CalculaPago() de la clase PagoBonificado retorna el monto a pagar multiplicado por la constante de bono de puntualidad. Seguramente se dio cuenta de que el monto a pagar es un dato que ya ofrece CalculaPago() de la clase Pago, por lo que se consume el mtodo de la clase base. Cuando haya agregado la opcin overrides, codifique lo que hace falte, al final la clase tiene que quedar de la siguiente manera:

  • Gua # 7: POO: Implementacin de Herencia

    Lenguajes de Programacin 1 15

    12. Agregue una clase llamada PagoBonificadoExtra, que ser pblica y que se agregara al mdulo que estamos trabajando. A la nueva clase agregue un mtodo de nombre CalculoPago(), que ser pblico y devolver un valor decimal.

    13. Edite el programa y agregue una lnea que especifique que la nueva clase hereda la funcionalidad de la clase PagoBonificado. Aqu se generara una contaminacin de espacios de nombres, dado que Pago ya posee un mtodo llamado CalculaPago(), y al estar heredando su funcionalidad, equivaldra a estar definiendo dos miembros con el mismo nombre, lo cual no es posible.

    14. Hay otro problema: el nuevo mtodo, adems de los beneficios de puntualidad, integrar un beneficio adicional que el usuario podr especificar, por lo cual el mtodo CalculaPago() no tiene el mismo nmero de argumentos que CalculaPago() de la clase PagoBonificado, por lo que una operacin de remplazo no es posible. Deber realizarse una operacin de sustitucin (overload) para que los argumentos del mtodo no necesariamente sean los mismos. Se tiene

    que agregar el valor Overload para Modificador de herencia (lo cual tiene mucho sentido si consideramos que la sustitucin tiene que ver ms con el polimorfismo que con la herencia). La nica variante entre los dos procedimientos es que el mtodo CalculaPago() de la clase PagoBonificadoExtra devuelve el monto a pagar multiplicado por la constante de bono de puntualidad (informacin que ofrece el mtodo CalculaPago () de la clase base), y adems le agrega un porcentaje adicional de beneficio.

    15. Desarrolle el punto anterior modificando la siguiente clase a su programa, busque la clase PagoBonificadoExtra y verifique que al final le queda el siguiente cdigo:

  • Gua # 7: POO: Implementacin de Herencia

    Lenguajes de Programacin 1 16

    16. Regrese al formulario, haga clic derecho sobre este y seleccione la opcin Ver cdigo y escribir el siguiente cdigo:

    17. Ejecute el proyecto y compruebe los valores.

  • Gua # 7: POO: Implementacin de Herencia

    Lenguajes de Programacin 1 17

    Conclusin del ejercicio:

    Al ejecutarse el programa, se define el valor del bono de puntualidad

    Dentro del formulario se genera una instancia de la clase Pago, una instancia de la clase PagoBonificado y una instancia de PagoBonificadoExtra. La funcionalidad de nuestras clases est disponible a travs de las variables objeto que acabamos de definir. Otro dato que se provee es el nmero de horas por semana sobre las que se calculan los pagos (TextBox1) y el nmero de Pago por hora (Textbox2).

    En el TextBox3 se consume el mtodo CalculaPago() de la clase Pago, que es la que dio origen al objeto PagoNormal. Se proporcionan como argumentos el nmero de horas trabajadas (TextBox1) y el pago por hora (TextBox2). El mtodo se encarga de recibir los dos valores, multiplicarlos y devolver el resultado. Es importante observar que este mtodo fue codificado de tal forma que permite su remplazo y sustitucin (modificador Overridable).

    En el TextBox4 se consume el mtodo: CalculaPago () de la clase PagoBonificado (la que dio origen al objeto PagoBonificacion. Se proporcionan como argumentos el nmero de horas trabajadas y el pago por hora. El mtodo se encarga de recibir los dos valores y declara una variable de trabajo a la cual le asigna el valor retornado el mtodo MyBase. CalculaPago(); en virtud de que la clase base es Pago, sera equivalente a ejecutar Pago.CalculaPago(). Se pasan los datos recibidos a MyBase.CalculaPago() y al resultado se le aplica el bono de puntualidad. Es importante notar que la clase hereda la funcionalidad de la clase Pago y remplaza la implementacin del mtodo Pago. CalculaPago (), por lo cual respeta la cantidad y el tipo de los argumentos establecidos en la clase base.

    En el TextBox5 se consume el mtodo CalculaPago () de la clase PagoBonificadoExtra, que es la que dio origen al objeto PagoBonificacionPlus. Se proporcionan como argumentos el nmero de horas trabajadas el pago por hora y el porcentaje aplicable al pago por buen desempeo. El mtodo se encarga de recibir los tres valores y declara una variable de trabajo la cual le asigna el valor retornado el mtodo MyBase.CalculaPago(), es decir, PagoBonificado.ClaseBase(), a la cual le pasa los datos que necesita. Al resultado le aplica el bono extra. Es importante observar que la clase hereda la funcionalidad de la clase PagoBonificado y sustituye la implementacin del mtodo PagoBonificado.CalculaPago(), dado que recibe un numero distinto de argumentos que el mismo mtodo en su clase base.

    Conteste las siguientes interrogantes

    Parte I. Preguntas

    1. Qu es la herencia?

    2. En qu casos se recomienda la implementacin de la herencia?

    3. Cules son los estatutos para establecer relaciones de herencia entre clases?

  • Gua # 7: POO: Implementacin de Herencia

    Lenguajes de Programacin 1 18

    4. Mencione y explique los estatutos auxiliares de herencia y polimorfismo.

    5. Mencione un ejemplo de automatizacin real, en donde pueda usted implementar herencia y

    polimorfismo.

    VI. BIBLIOGRAFA

    Bill Evjen, Jason Beres y otros (2002), El libro de Visual Basic.NET (1era Ed), Espaa. Editorial Anaya

    Ceballos, Francisco Javier (2006), ENCICLOPEDIA DE MICROSOFT VISUAL BASIC (1er Ed), Mexico, Editorial ALFAOMEGA, ISBN: 9701512189