Unidad 8 Ayudantia Informatica Inacap
Unidad 8 Ayudantia Informatica Inacap
Unidad 8 Ayudantia Informatica Inacap
Semana VIII
Inicio 10 minutos:
Resumen de la semana anterior
10 minutos:
Al trmino de la semana
Contenido:
225 minutos.
Material de apoyo:
2 PPT.
1 Gua Prctica.
1 Actividad Propuesta.
Aprendizajes esperados
Herencia
Herencia
Una de las ms poderosas caractersticas de la OO es la herencia, presentando
fundamentalmente una excelente forma de reutilizar cdigo, sin embargo la
herencia va un paso ms lejos y aporta al usuario la posibilidad de crear
relaciones entre clases, no slo con el fin de reutilizar cdigo, sino que mejorar
de manera sustancial el diseo de un conjunto de clases, su organizacin,
agrupacin y definicin de sus comportamientos.
(Definicin) Es la capacidad que tiene las clases de heredar sus atributos,
comportamientos hacia otras clases con el fin de que ellas puedan extender
su funcionalidad.
La herencia es muy beneficiosa cuando existe un conjunto de clases que
contienen funcionalidades y atributos en comn, por ejemplo, si necesitramos
definir dos clases, la primera para crear un objeto de tipo perro, del cual nos
interesa su peso, edad, velocidad mxima al correr y el comportamiento ladrar
y comer.
Y la segunda, una clase que permita crear un objeto del tipo gato, del cual
tambin se desea su peso, edad, cantidad de vidas restantes y sus
comportamientos maullar y comer.
Existe alguna similitud entre ambas clases? Por supuesto que s y esto se
debe a que ambos son mamferos y comparten las propiedades edad, peso
y el comportamiento comer.
Una solucin basada en la herencia a este problema, consiste en agrupar en
una clase todos aquellos elementos que ambos objetos tienen en comn,
esto, con el fin de generar una nica vez los atributos peso, edad y toda la
complejidad que pueda involucrar el comportamiento comer, posteriormente
las clase gato y perro heredaran de la clase mamfero, haciendo que ambas
posean el atributo edad, peso y el comportamiento comer sin necesidad de
volver a codificarlos, de esta forma el gato solo tendr que definir en su propia
clase lo que le falta o especializa.
Herencia
Herencia
Aqu se puede apreciar como mediante la palabra clave this en la clase hijo
se puede utilizar el get del atributo color de pelo, a pesar de que este no est
directamente declarado en la clase y pertenece ahora a ella debido a que es
Herencia
Herencia
Perfecto, hasta aqu tenemos una clase que nos permite crear un punto con
sus respectivas coordenadas y que adems permite reiniciarlo, proceso que
consisten en volverlo a dejarlo en la coordenada (0,0).
Que sucede si agregamos una nueva funcionalidad, la cual consiste en
la ubicacin de un punto en 3D, la pregunta que hay que realizar antes de
comenzar a programar dicha clase, es: hay similitud entre un punto en 3D
y uno en 2D? pues claro, nota que el punto en 3D tambin posee coordenadas
en X e Y agregando slo la coordenada Z, adems el proceso de reiniciado,
es muy similar, la diferencia est en que en punto 3D el mtodo es ms
especializado dado que tambin debe llevar la coordenada Z a cero, o dicho
de otra forma, hay parte de reiniciar en la clase punto que nos sirve en la
clase Punto3D.
Lo primero que debemos hacer entonces es implementar la herencia en la
clase Punto3D, para ello escribimos lo siguiente:
Con esta simple lnea de cdigo ya es posible en punto3D contar con toda
la funcionalidad heredada desde la clase Punto, sin embargo nota que la
lnea que implementa la herencia presenta un error, recuerdas que omitimos
el constructor sin parmetros en la clase punto? Pues bien, esa es la razn
del error que se nos presenta, este error est dado por lo siguiente; una clase
hija que herede de una sper clase, de forma obligatoria necesita que exista
la sper clase primero, as como el hijo, necesita que exista la madre, en este
caso en particular nota que nuestra clase hija no tiene ningn constructor,
esto implica que Java agregar el constructor por defecto a la clase, dada
esta necesidad, cada vez que se aplica la herencia, una clase hija tratar
mediante su constructor por defecto de llamar al constructor sin parmetros
de su clase padre, mientras no se haga una llamada explicita a alguno de
sus constructores, dada esta regla este problema tiene dos soluciones:
Herencia
1)
Realizar desde la clase hija la llamada a un constructor que exista en
la clase padre
Herencia
2)
Herencia
Herencia
Sobre escritura
Este pequeo inconveniente puede solucionarse agregando al cdigo una
sobre escritura del mtodo reiniciar en la clase Punto3D como muestra la
siguiente imagen.
Herencia
El resultado ser (0, 0, 0), lo que significa que la sobre escritura ha funcionado.
Recuerda que la herencia puede tener todo los niveles que se desee, por
ejemplo, si creamos una clase que herede de Punto3D y en ella agregamos
una nueva coordenada, tendramos un objeto que permitiese especificar 4
coordenadas. Los comportamientos como getX y getY se encontraran
disponibles en dicha clase dado que la clase Punto se los hereda a Punto3D
y Punto3D le heredar todo lo del Punto en 2D ms todo lo implementado en
la clase 3D hacia nuestra nueva clase, sin embargo, el comportamiento
reiniciar original de la clase Punto, no podr utilizarse en la nueva clase ya
que Punto3D lo ha ocultado, siendo el comportamiento de esta clase el
heredado hacia su clase hija.
final
Herencia
Herencia
Niveles de pensamiento:
CONOCIMIENTO: Repetir.
COMPRENSIN: Transformar.
Ejercicio 01
Duracin: 45 minutos
1._ REPITE los ejemplos dados en esta gua.
Niveles de pensamiento:
APLICACIN: Demostrar.
Niveles de pensamiento:
ANLISIS: Investigar.
SINTESIS: Resumir.
Actividades
Contenido:
225 minutos.
Material de apoyo:
2 PPT.
1 Gua Prctica.
1 Actividad Propuesta.
Cierre
clase.