Download Implementacion de la Herencia

Document related concepts

Polimorfismo (informática) wikipedia , lookup

Rust (lenguaje de programación) wikipedia , lookup

Dylan (lenguaje de programación) wikipedia , lookup

Common Lisp Object System wikipedia , lookup

Visitor (patrón de diseño) wikipedia , lookup

Transcript
UNIVERSIDAD DON BOSCO
FACULTAD DE ESTUDIOS TECNOLÓGICOS
ESCUELA DE COMPUTACION
GUIA DE LABORATORIO #07
CICLO:
02/ 2013
Nombre de la Practica:
Programación Orientada a Objetos, Implementación de
Herencia
Lugar de Ejecución:
Centro de Computo
Tiempo Estimado:
2 horas y 30 minutos
Materia:
Lenguajes de Programación 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 creación de Clases Principales y Clases Derivadas
Implementar correctamente el principio del Polimorfismo
Ejemplificar la elaboración de las clases y su implementación en objetos
II. INTRODUCCION 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 polimorfismo.
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.
1
Guía # 7: POO: Implementación de Herencia
En Visual Basic, por omisión, 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 código sólo una vez, para una clase, y disponer en muchas clases de la misma funcionalidad,
estableciendo las referencias adecuadas.
¿Cuándo 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 cómo han de ser las clases, organizándolas en lo
que se conoce como Jerarquía de clases.
Se recomienda una jerarquía de clases cuando entre las clases se presenta una relación 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 características de los automóviles en general (Automóviles)
tiene mucho que compartirle a una clase que almacena las particularidades de los automóviles
deportivos (AutomóvilesDeportivos), pues un automóvil deportivo, antes que ser de tipo deportivo, es
un automóvil (is-a). Ahora pregúntese, ¿qué comparte un dueño de un automóvil y un automóvil?
Automóviles y DueñosAutomóviles, no comparten rasgos. Las personas que poseen automóviles no se
derivan de los automóviles, ni viceversa. Que una persona tenga un (has-a) automóvil, no quiere decir
que comparta con éste sus métodos, propiedades y eventos. Imagínese tener que determinar el tipo de
transmisión, número de puertas y número de serie que una persona posee. Simplemente, de una cosa
no puede derivar la otra.
Se recomienda una jerarquía de clases, obviamente, sólo si el código de una clase brinda alguna
funcionalidad que se pueda reutilizar; tratar de heredar aspectos muy particulares que sólo son
pertinentes para una clase no tiene sentido.
Inherits (Heredar)
El estatuto Inherits se utiliza para especificar que una clase de nueva creación 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.
Lenguajes de Programación 1
2
Guía # 7: POO: Implementación de Herencia
Notlnheritable (No heredable)
Como ya se menciono, que por omisión todas las clases en Visual Basic pueden heredarse. Habrán
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 generaría 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 través de una instancia de la misma, es decir, de un objeto basado
en la clase. Eso es verdadero sólo 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 sólo 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 generaría error (Dim Objeto As New NombreClase())
Modificadores de acceso, necesarios para la herencia.
Usted debe determinar el alcance que tendrá su jerarquía de clases, a efecto de restringir el acceso a las
clases, de tal manera que sólo puedan heredarlas aquellas porciones de código que deban hacerlo.
Calificar una clase como clase pública (public class), se logra utilizando el modificador de acceso Public
al momento de la declaración de la clase. Esto garantiza que todas las clases podrán utilizar la clase
todo el tiempo; en este caso, el acceso es abierto.
Lenguajes de Programación 1
3
Guía # 7: POO: Implementación de Herencia
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 jerarquía de clases el acceso puede heredarse sólo 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 (métodos,
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 serían más con algunas pequeñas modificaciones.
Dichas modificaciones se realizan en la clase derivada, respecto de las definiciones originales existentes
en la clase base.
La programación orientada a objetos hace posible que eso suceda, pues permite implementar diferentes
comportamientos para un método (override), o de plano remplazarlo por completo (overload). La
funcionalidad heredada puede modificarse por otra que sea más indicada para el problema de
programación que deseamos resolver; con ello se promueve que la reutilización del código sea flexible
y adaptable.
Por omisión, una clase derivada hereda los métodos y propiedades de su clase base. Si necesitamos que
una propiedad o método 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 modificación 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:
Lenguajes de Programación 1
4
Guía # 7: POO: Implementación de Herencia
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 método de una clase base pueda ser
sustituido en una clase derivada. Por omisión, los métodos públicos 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 método (elemento) de clase base puede ser
modificado en su implementación o sustituido en una clase derivada.
MustOverride (Debe reemplazarse)
El tercer escenario es que la modificación a la funcionalidad de la clase base no sólo posible, sino que
sea obligatoria. El estatuto MustOverride hace que sea obligatorio hacer variaciones, en la clase
derivada, de las propiedades o método de la clase base que han sido heredados.
Del lado de la clase derivada hay dos escenarios, que sólo 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 variación en la clase
derivada, de sus propiedades o sus métodos. Esto será siempre y cuando se mantengan los mismos
argumentos en el método de la clase base y la clase derivada Overrides sólo permite desarrollar en la
clase derivada una implementación distinta de un elemento de la clase base, y no su sustitución 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, además de modificar el comportamiento de los métodos que participan en una relación
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 método que modifica al heredado de la clase base
requiere una cantidad distinta de argumentos. En este caso, ya no hablamos de una implementación
distinta de lo mismo, sino de dos métodos bastante distintos entre sí que comparten un nombre.
Lenguajes de Programación 1
5
Guía # 7: POO: Implementación de Herencia
En este último caso, Overrides no sirve pues exige igualdad de argumentos. Para poder lograr nuestro
cometido, debemos utilizar Overloads, que indica la sustitución del método de la clase base por otro de
la clase derivada, tengan o no relación entre sí. Overloads es la única forma de implementar, bajo un
mismo nombre, dos métodos que no coinciden más que en el nombre.
MyBase y MyClass
Se puede utilizar la palabra reservada MyBase para llamar a ejecución a un método 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 método, entonces c) es posible mandar llamar a ejecución al método, 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 aplicación a que utilice un método de la clase base y no de la clase
derivada; en caso contrario, es posible que queramos mandar llamar el método tal y como está en la
clase derivada. Para ello utilizamos la palabra reservada MyClass, que se encarga de llamar a ejecución
un método 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 más flexible de
la herencia y el polimorfismo.
Polimorfismo
El polimorfismo es la habilidad que tiene el lenguaje para definir múltiples clases que contengan
métodos y propiedades del mismo nombre, pero que brindan diferente funcionalidad.
Cuando se presenta el polimorfismo es posible elegir, en tiempo de ejecución, aquellos métodos o
propiedades que necesitamos. No importa que varias clases posean los mismos métodos y las mismas
propiedades: la aplicación debe ser capaz de utilizar precisamente aquellas cuya funcionalidad estemos
invocando.
La herencia y la sustitución de métodos 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 además de esto, los métodos 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 manifestación
aún más pura del polimorfismos se presenta cuando se utiliza Overloads, que implica una sustitución
completa de meto que se encuentran en clases que guardan una relación de herencia.
Cuando en una clase derivada se modifican métodos o propiedades de la clase base, se dice que hay
polimorfismo basado en herencia.
Lenguajes de Programación 1
6
Guía # 7: POO: Implementación de Herencia
III. MATERIALES Y EQUIPO
Para la realización de la guía de práctica se requerirá lo siguiente:
No.
Requerimiento
Cantidad
1
Guía de Laboratorio 7 de LP1
1
2
PC con Microsoft Visual Studio 2010 .NET instalado
1
3
Memoria USB
1
4
Computadora con acceso a Internet
1
IV. PROCEDIMIENTO
Para esta práctica deberá crear una carpeta con el nombre de “Guia7LP1_SuCarnet”, en la cual va a
guardar todos los archivos de esta práctica.
Ejercicio 1. Uso de Herencia
1. Abrir un nuevo proyecto en Visual Basic 2010
2. Colocar como nombre del proyecto: Guia7Ejercicio1
En este ejercicio la aplicación 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 mañana o noche y las horas extras se pagan de acuerdo a ese turno (si
es en la mañana 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 mañana este no tiene
seguro de vida, solamente tiene seguro de vida aquel empleado que trabaja en la noche.
Lenguajes de Programación 1
7
Guía # 7: POO: Implementación de Herencia
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 diseño del formulario del proyecto
4. Cambiar las propiedades de los controles del formulario, así como se muestra en la siguiente
tabla:
Control
Name
GroupBox2
Text
Datos del
Empleado
Descuentos
GroupBox3
Turno
GroupBox1
Label1
Label2
Label3
Label4
lblnombre
lblsueldobase
lblhorasextras
lblpagoporhora
Label5
lblseguro
Lenguajes de Programación 1
Propiedades
Font
Microsoft Sans Serif;
Negrita; 9
Microsoft Sans Serif;
Negrita; 9
Microsoft Sans Serif;
Negrita; 9
Nombre:
Sueldo Base: $
Horas Extras:
Pago por hora
extra: $
Seguro: $
8
Enabled
False
ReadOnly
Guía # 7: POO: Implementación de Herencia
Label6
Label7
lblsegurovida
lblsueldoneto
Seguro de Vida: $
Sueldo Neto: $
TextBox1
TextBox2
TextBox3
TextBox4
TextBox5
TextBox6
TextBox7
txtnombre
txtsueldobase
txthorasextras
txtpagoporhora
txtseguro
txtsegurovida
txtsueldoneto
RadioButton1
RadioButton2
Button1
turnomañana
turnonoche
btncalcular
Mañana
Noche
Calcular
Button2
btnsalir
Salir
Microsoft Sans Serif;
Negrita; 9
True
True
Microsoft Sans Serif;
Negrita; 9
Microsoft Sans Serif;
Negrita; 9
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:
Lenguajes de Programación 1
9
False
Guía # 7: POO: Implementación de Herencia
7. Siempre en el modulo Empleado, agregar la siguiente clase:
8. En el formulario, coloque el siguiente código, a nivel de formulario:
9. En el evento Load del formulario, coloque el siguiente código:
Lenguajes de Programación 1
10
Guía # 7: POO: Implementación de Herencia
10. En el evento Click del botón btncalcular, coloque el siguiente código:
11. Haga doble clic en el primer control de RadioButton (turnomañana) y coloque el siguiente
código:
12. Haga doble clic en el segundo control de RadioButton (turnonoche) y coloque el siguiente
código:
13. En el evento Click del botón btnsalir, coloque el siguiente código:
14. Ejecute la aplicación y realice las pruebas necesarias.
Lenguajes de Programación 1
11
Guía # 7: POO: Implementación de Herencia
Ejercicio complementario:
1. Coloque las validaciones necesarias en cada una de las entradas de datos
2. Modifique la aplicación, de tal manera solo se tenga un método descuentos, no importa si la
clase 2 se queda sin métodos, 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 2010
2. Colocar como nombre del proyecto: Guia7Ejercicio2
Comprobación 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 heredarán 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 más un bono por puntualidad del 25%, e incluso un bono adicional del 20%.
3. Crear el siguiente diseño del formulario:
4. Agregar un modulo al proyecto y tendrá como nombre Module1.vb
Lenguajes de Programación 1
12
Guía # 7: POO: Implementación de Herencia
5. Edite el Module1.vb de tal forma que aparezca de la siguiente manera:
6. Agregue una clase llamada pago, que será pública.
7. Agregue un método de nombre CalculaPago(), que será público y que devolverá un valor
Decimal
8. En el nombre del método es debe agregar el Modificador de herencia Overridable.
9. En este punto, el código del modulo debe lucir de la siguiente manera:
Option Explicit On
Option Strict On
Module Module1
Const BonoPuntualidad As Decimal = 1.25D
'Utilice el carácter de tipo D para forzar
'que los valores sean Decimal
End Module
Public Class Pago
' Cálculo del pago neto
Lenguajes de Programación 1
13
Guía # 7: POO: Implementación de Herencia
Public Overridable Function CalculaPago() As Decimal
End Function
End Class
10. Coloque como argumentos de CalculaPago() las horas trabajadas y el pago por hora.
Complemente el método, a fin de que proporcione un resultado. El procedimiento debe quedar
de la siguiente manera:
11. Agregue una clase llamada PagoBonificado, que será pública y que se agregara al modulo que
estamos trabajando
12. A esta clase agregue un método de nombre CalculaPago(), que será público y devolverá un
valor Decimal
13. Edite el programa y agregue una línea que especifique que la nueva clase hereda la
funcionalidad de la clase Pago (Inherits Pago). Aquí se generaría una contaminación de espacios
de nombres, dado que Pago ya posee un método llamado CalculaPago(), y al estar heredando
su funcionalidad, equivaldría a estar definiendo dos miembros con el mismo nombre, lo cual no
es posible. Para evitar el problema, seleccione el método CalculaPago () de PagoBonificado
deberá modificarse la propiedad Modificador de herencia asignando un valor Overrides. Dado
que se está realizando una operación de reemplazo (overrides), los argumentos del método
deben ser exactamente los mismos. La única variante entre los dos procedimientos es que el
método 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
Lenguajes de Programación 1
14
Guía # 7: POO: Implementación de Herencia
dato que ya ofrece CalculaPago() de la clase Pago, por lo que se consume el método de la clase
base.
14. Cuando haya agregado la opción overrides, codifique lo que hace falte, al final la clase tiene que
quedar de la siguiente manera:
15. Agregue una clase llamada PagoBonificadoExtra, que será pública y que se agregara al modulo
que estamos trabajando.
16. A la nueva clase agregue un método de nombre CalculoPago(), que será publico y devolverá un
valor decimal.
17. Edite el programa y agregue una línea que especifique que la nueva clase hereda la
funcionalidad de la clase PagoBonificado. Aquí se generaría una contaminación de espacios de
nombres, dado que Pago ya posee un método llamado CalculaPago(), y al estar heredando su
funcionalidad, equivaldría a estar definiendo dos miembros con el mismo nombre, lo cual no es
posible.
18. Hay otro problema: el nuevo método, además de los beneficios de puntualidad, integrará un
beneficio adicional que el usuario podrá especificar, por lo cual el método CalculaPago() no
tiene el mismo número de argumentos que CalculaPago() de la clase PagoBonificado, por lo que
una operación de remplazo no es posible. Deberá realizarse una operación de sustitución
(overload) para que los argumentos del método 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 sustitución tiene que ver más con el polimorfismo que con la herencia). La
única variante entre los dos procedimientos es que el método CalculaPago() de la clase
PagoBonificadoExtra devuelve el monto a pagar multiplicado por la constante de bono de
puntualidad (información que ofrece el método CalculaPago () de la clase base), y además le
agrega un porcentaje adicional de beneficio.
Lenguajes de Programación 1
15
Guía # 7: POO: Implementación de Herencia
19. Desarrolle el punto anterior modificando la siguiente clase a su programa, busque la clase
PagoBonificadoExtra y verifique que al final le queda el siguiente código:
20. Regrese al formulario, haga clic derecho sobre este y seleccione la opción Ver código y escribir
el siguiente código:
21. Ejecute el proyecto y compruebe los valores.
Lenguajes de Programación 1
16
Guía # 7: POO: Implementación de Herencia
Conclusión 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 través de las variables objeto que acabamos de definir. Otro dato que
se provee es el número de horas por semana sobre las que se calculan los pagos (TextBox1) y
el número de Pago por hora (Textbox2).
En el TextBox3 se consume el método CalculaPago() de la clase Pago, que es la que dio
origen al objeto PagoNormal. Se proporcionan como argumentos el número de horas
trabajadas (TextBox1) y el pago por hora (TextBox2). El método se encarga de recibir los dos
valores, multiplicarlos y devolver el resultado. Es importante observar que este método fue
codificado de tal forma que permite su remplazo y sustitución (modificador Overridable).
En el TextBox4 se consume el método: CalculaPago () de la clase PagoBonificado (la que dio
origen al objeto PagoBonificacion. Se proporcionan como argumentos el número de horas
trabajadas y el pago por hora. El método se encarga de recibir los dos valores y declara una
variable de trabajo a la cual le asigna el valor retornado el método MyBase. CalculaPago();
en virtud de que la clase base es Pago, sería 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
Lenguajes de Programación 1
17
Guía # 7: POO: Implementación de Herencia
remplaza la implementación del método 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 método CalculaPago () de la clase PagoBonificadoExtra, que es
la que dio origen al objeto PagoBonificacionPlus. Se proporcionan como argumentos el
número de horas trabajadas el pago por hora y el porcentaje aplicable al pago por buen
desempeño. El método se encarga de recibir los tres valores y declara una variable de trabajo
la cual le asigna el valor retornado el método 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 implementación del método PagoBonificado.CalculaPago(),
dado que recibe un numero distinto de argumentos que el mismo método en su clase base.
Conteste las siguientes interrogantes
Parte I. Preguntas
1. ¿Qué es la herencia?
2. ¿En qué casos se recomienda la implementación de la herencia?
3. ¿Cuáles son los estatutos para establecer relaciones de herencia entre clases?
4. Mencione y explique los estatutos auxiliares de herencia y polimorfismo.
5. Mencione un ejemplo de automatización real, en donde pueda usted implementar herencia y
polimorfismo.
Parte II. Subraye la respuesta que considere que responde a la pregunta.
1. Es la habilidad de una clase para servir de base a otra clase, trasladándole su funcionalidad:
a. Herencia
b. Polimorfismo
c. Encapsulamiento
2. Tipo do relación para la que se recomienda la herencia:
a. Has-a
b. Is-a
c. Go-to
Lenguajes de Programación 1
18
Guía # 7: POO: Implementación de Herencia
3. Permite la variación en la clase derivada, de las propiedades y métodos (requiere mantener los
mismos argumentos)
a. Inherits
b. Overrides
c. Overloads
4. Habilidad de un lenguaje para definir clases que se comporten distinto, a pesar de llamarse igual:
a. Herencia
b. Polimorfismo
c. Encapsulamiento
5. Permiten generar un tipo de dato compuesto:
a. Delegados
b. Clases
c.
Estructuras
Parte III: Coloque en la línea la letra «F» si el enunciado es falso y «V» si es verdadero.
1. Por omisión, las clases en Visual Basic son Notlnheritable. _____________
2.
Si no desea un acceso abierto a su clase puede restringir el acceso al utilizar el modificador Friend.
_________________
3. MyClass se utiliza para llamar a ejecución un método de la clase base.
_____________
4. La manifestación más pura del polimorfismo es la utilización de Overloads. _____________
5. Si un automóvil y su dueño fueran objetos, la relación entre ellos seria is - a. _____________
VI. BIBLIOGRAFÍA
•
Bill Evjen, Jason Beres y otros (2002), El libro de Visual Basic.NET (1era Ed), España. Editorial
Anaya
•
Ceballos, Francisco Javier (2006), ENCICLOPEDIA DE MICROSOFT VISUAL BASIC (1er Ed),
Mexico, Editorial ALFAOMEGA, ISBN: 9701512189
Lenguajes de Programación 1
19