Sie sind auf Seite 1von 5

Complete las siguientes oraciones:

13.1 a) Tratar a un objeto de la clase base como un objeto de la clase derivada


puede provocar errores lgicos.

b) El polimorsmo ayuda a eliminar la lgica de switch.

c) Si una clase contiene al menos una funcin virtual pura, es una clase abstracta.

d) Las clases a partir de las cuales pueden instanciarse objetos se llaman clases
concretas.

e) El operador dynamic_cast se puede usar para realizar conversiones


descendentes con los apuntadores de la clase base en forma segura.

f ) El operador typeid devuelve una referencia a un objeto type_info.

g) El polimorfismo implica el uso de un apuntador o referencia de la clase base


para invocar funciones virtual en objetos de la clase base y la clase derivada.

h) Las funciones que pueden sobrescribirse se declaran mediante la palabra clave


virtual.

i) Al proceso de convertir un apuntador de la clase base en un apuntador de la


clase derivada se le conoce como conversin descendente.

13.2 Conteste con verdadero o falso a cada una de las siguientes proposiciones;
en caso de ser falso, explique por qu.

a) Todas las funciones virtual en una clase base abstracta se deben declarar
como funciones virtual puras..( F )

R/= Falso. Una clase abstracta puede incluir funciones virtuales con
implementaciones.

b) Es peligroso tratar de hacer referencia a un objeto de la clase derivada con un


manejador de la clase base...( F )
R/= Falso. Es peligroso hacer referencia a un objeto de la clase base con un
manejador de la clase derivada.

c) Para hacer a una clase abstract, se declara como virtual...( F )

R/= Falso. Las clases nunca se declaran virtuales. En vez de ello, una clase se
hace abstracta al incluir por lo menos una funcin virtual pura en ella.

d) Si una clase base declara a una funcin virtual pura, una clase derivada debe
implementar la funcin para convertirse en una clase concreta.( V )
Verdadero.

e) La programacin polimrca puede eliminar la necesidad de la lgica de


switch....( V )
Verdadero.

Ejercicios

13.3 Cmo es que el polimorsmo le permite programar en forma general, en


lugar de hacerlo en forma especca?
Hable sobre las ventajas clave de la programacin en forma general.

El polimorfismo es un concepto de la programacin orientada a objetos que nos


permite programar en forma general, en lugar de hacerlo en forma especfica. En
general nos sirve para programar objetos con caractersticas comunes y que
todos estos compartan la misma superclase en una jerarqua de clases, como si
todas fueran objetos de la superclase. Esto nos simplifica la programacin.

13.4 Hable sobre los problemas de programar con la lgica de switch. Explique
por qu el polimorsmo puede ser una alternativa efectiva al uso de la lgica de
switch.
R/= - El programador podra olvidar incluir una prueba de tipos cuando sea
obligatorio hacerla.
- Podra olvidar evaluar todos los casos posibles en una instruccin switch.
- Rastrear instrucciones puede ser un proceso que consuma mucho tiempo y
est propenso a errores.

La programacin polimrfica puede eliminar la necesidad de la lgica switch. Al


utilizar el mecanismo polimrfico para realizar la lgica equivalente, los
programadores pueden evitar el tipo de errores que se asoscian generalmente
con la lgica de switch.
13.5 Explique la diferencia entre heredar la interfaz y heredar la implementacin.
En qu dieren las jerarquas de herencia diseadas para heredar la interfaz, de
las jerarquas diseadas para heredar la implementacin?

R/= Toda herencia lo es de implementacin, dado que todo en una clase base,
interface e implantacin, pasa a formar parte de la clase derivada. No es posible
heredar solo una parte de una clase (es decir, la interface nicamente).

La herencia de interfaces por otra parte, slo aade declaraciones de miembros


a la interfaz de la clase derivada, algo que no est soportado directamente en
C++

13.6 Qu son las funciones virtual? Describa una circunstancia en la que las
funciones virtual seran apropiadas.
R/= Una funcin virtual o mtodo virtual es una funcin cuyo comportamiento,
al ser declarado "virtual", es determinado por la definicin de una funcin con la
misma cabecera en alguna de sus subclases.
Por ejemplo, una clase base Animal podra tener una funcin virtual come. La
subclase Pez implementara de forma diferente que la subclase Lobo, pero se
podra invocar a come() en cualquier instancia de una clase referida como
Animal, y obtener el comportamiento de come() de la subclase especfica.

13.7 Explique la diferencia entre la vinculacin esttica y la vinculacin dinmica.


Explique el uso de las funciones virtual y la vtable en la vinculacin dinmica.
R/= Podemos declarar estticas funciones y mtodos. Variables pueden estar
estticas dentro de funciones, mtodos, clases y a nivel global, es decir, por
todas parte

La vinculacin dinmica requiere que en tiempo de ejecucin, la llamada a una


funcin miembro virtual se dirija a la versin de la funcin virtual apropiada para
esa clase.

La funcin vtable, se implementa como un arreglo que contiene apuntadores a


funciones. Cada clase con funciones virtual tiene una vtable. Para cada funcin
virtual en la clase, la vtable tiene una entrada que contiene un apuntador a
funcin que apunta a la versin de la funcin virtual que se debe usar para un
objeto de esa clase. La funcin virtual a utilizar para una clase especca podra
ser la funcin denida en esa clase, o podra ser una funcin heredada ya sea
de manera directa o indirecta de una clase base en un nivel ms alto en la
jerarqua.
13.8 Explique la diferencia entre las funciones virtual y las funciones virtual puras.

R/= Una funcin virtual o mtodo virtual es una funcin cuyo comportamiento,
al ser declarado "virtual", es determinado por la definicin de una funcin con la
misma cabecera en alguna de sus subclases.
Una funcin virtual pura o mtodo virtual puro es una funcin virtual que
necesita ser implementada por una clase derivada que no sea abstracta.

13.9 Sugiera uno o ms niveles de clases base abstractas para la jerarqua de


Figura que vimos en este captulo, y que se muestra en la gura 12.3. (El primer
nivel es Figura, y el segundo nivel consiste en las clases Figura Bidimensional y
Figura Tridimensional.)

Clase abstracta FiguraBinomial: Rectangulo, equilatero

Clase abstracta FiguraTridimensional: Exagono, ettagono.

13.10 Cmo promueve el polimorsmo la extensibilidad?

R/= Esta se lleva a cabo ya que el polimorfismo nos permite ampliar nuestros
programas hacindolos de manera simplificada pero a su vez de una forma
extensa ya que permite que con un solo paso realice mltiples opciones.

13.11 Se le ha pedido que desarrolle un simulador de vuelo que tenga salidas


grcas elaboradas. Explique por qu la programacin polimrca podra ser
especialmente efectiva para el problema de esta naturaleza.

R/= Con el polimorfismo, una funcin puede ocasionar que ocurran distintas
acciones, dependiendo del tipo del objeto que se invoca en la funcin.
13.12 (Modique el sistema de nmina) Modique el sistema de nmina de las
13.13 a 13.23 para incluir el miembro de datos privado llamado fechaNacimiento
en la clase empleado. Use la clase Fecha de la figura 11.12 y 11.13 para
representar el cumpleaos de un empleado. Suponga que la nmina se procesa
una vez al mes. Cree un vector de referencias Empleado para guardar los diversos
objetos empleado. En un ciclo, calcule la nmina para cada Empleado (mediante
el polimorsmo) y agregue una bonificacin de $.100.00 a la cantidad de pago de
nmina de la persona, si el mes actual es el mes en el que ocurre el cumpleaos
de ese Empleado.

Adjunto encontrara el desarrollo

13.16 (Programa bancario polimrco mediante el uso de la jerarqua Cuenta)


Desarrolle un programa bancario polimrco mediante el uso de la jerarqua
Cuenta creada en el ejercicio 12.10. Cree un vector de apuntadores Cuenta a
objetos CuentaAhorros y CuentaCheques. Para cada Cuenta en el vector, permita
al usuario especicar un monto de dinero a retirar de la Cuenta, usando la funcin
miembro cargar, y un monto de dinero a depositar en la Cuenta mediante el uso
de la funcin miembro abonar. A medida que procese cada Cuenta, determine su
tipo. Si una Cuenta es una CuentaAhorros, calcule el monto de inters que se
debe a la Cuenta usando la funcin miembro CalcularInteres, y despus agregue
el inters al saldo actual mediante la funcin miembro abonar. Despus de
procesar una Cuenta, imprima el saldo de la cuenta actualizado que se obtiene al
invocar a la funcin miembro getSaldo de la clase base.

Adjunto encontrara el desarrollo

Das könnte Ihnen auch gefallen