416
Capítulo 9 Programación orientada a objetos: herencia
c)
Una
clase
Auto
tiene una relación
“es un” con las clases
VolanteDireccion
y
Frenos
.
d) La herencia fomenta la reutilización de software comprobado, de alta calidad.
e) Cuando una subclase redefi ne al método de una superclase utilizando la misma fi rma, se dice que la subclase
sobrecarga a ese método de la superclase.
Respuestas a los ejercicios de autoevaluación
9.1
a) Herencia. b)
public
y
protected
. c)
“es un” o de herencia. d) “tiene-un”, o composición. e) jerárquica.
f)
public
. g) constructor. h)
super
.
9.2
a) Verdadero. b) Falso. Una relación
“tiene un” se implementa mediante la composición. Una relación “es-un”
se implementa mediante la herencia. c) Falso. Éste es un ejemplo de una relación
“tiene un”. La clase
Auto
tiene una
relación
“es-un” con la clase
Vehiculo
. d) Verdadero. e) Falso. Esto se conoce como sobrescritura, no sobrecarga;
un método sobrecargado tiene el mismo nombre, pero una fi rma distinta.
Ejercicios
9.3
Muchos programas escritos con herencia podrían escribirse mediante la composición, y viceversa. Vuelva a
escribir las clases
EmpleadoBaseMasComision4
(fi gura 9.13) de la jerarquía
EmpleadoPorComision3-EmpleadoBase-
MasComision4
para usar la composición en vez de la herencia. Una vez que haga esto, valore los méritos relativos de las
dos metodologías para los problemas de
EmpleadoPorComision3
y
EmpleadoBaseMasComision4
, así como también
para los programas orientados a objetos en general. ¿Cuál metodología es más natural? ¿Por qué?
9.4
Describa las formas en las que la herencia fomenta la reutilización de software, ahorra tiempo durante el desa-
rrollo de los programas y ayuda a prevenir errores.
9.5
Dibuje una jerarquía de herencia para los estudiantes en una universidad, de manera similar a la jerarquía que se
muestra en la fi gura 9.2. Use a
Estudiante
como la superclase de la jerarquía, y después extienda
Estudiante
con las
clases
EstudianteNoGraduado
y
EstudianteGraduado
. Siga extendiendo la jerarquía con el mayor número de niveles
que sea posible. Por ejemplo,
EstudiantePrimerAnio
,
EstudianteSegundoAnio
,
EstudianteTercerAnio
y
Estu-
dianteCuartoAnio
podrían extender a
EstudianteNoGraduado
, y
EstudianteDoctorado
y
EstudianteMaestria
podrían ser subclases de
EstudianteGraduado
. Después de dibujar la jerarquía, hable sobre las relaciones que existen
entre las clases. [
Nota: no necesita escribir código para este ejercicio].
9.6
El mundo de las fi guras es más extenso que las fi guras incluidas en la jerarquía de herencia de la fi gura 9.3.
Anote todas las fi guras en las que pueda pensar (tanto bidimensionales como tridimensionales) e intégrelas en una
jerarquía
Figura
más completa, con todos los niveles que sea posible. Su jerarquía debe tener la clase
Figura
en la parte
superior. Las clases
FiguraBidimensional
y
FiguraTridimensional
deben extender a
Figura
. Agregue subclases
adicionales, como
Cuadrilatero
y
Esfera
, en sus ubicaciones correctas en la jerarquía, según sea necesario.
9.7
Algunos programadores prefi eren no utilizar el acceso
protected
, pues piensan que quebranta el encapsula-
miento de la superclase. Hable sobre los méritos relativos de utilizar el acceso
protected
, en comparación con el acceso
private
en las superclases.
9.8
Escriba una jerarquía de herencia para las clases
Cuadrilatero
,
Trapezoide
,
Paralelogramo
,
Rectangulo
y
Cuadrado
. Use
Cuadrilatero
como la superclase de la jerarquía. Agregue todos los niveles que sea posible a la jerar-
quía. Especifi que las variables de instancia y los métodos para cada clase. Las variables de instancia
private
de
Cuadri-
latero
deben ser los pares de coordenadas
x-y para los cuatro puntos fi nales del
Cuadrilatero
. Escriba un programa
que cree instancias de objetos de sus clases, y que imprima el área de cada objeto (excepto
Cuadrilatero
).
09_MAQ_CAP_09.indd416
4/19/081:24:44AM