Polimorfismo

Páginas: 6 (1441 palabras) Publicado: 26 de mayo de 2015
Polimorfismo
Material apoyo POO

Introducción
• El tema de polimorfismo es grande y complejo,
en esta sesión abordaremos en tema en un
vistazo general.
• Literalmente, la palabra Polimorfismo significa
“muchas formas”.
• En la programación, el polimorfismo nos
permite interactuar con muchos objetos sin
tener qué preocuparnos qué son dichos
objetos.
Mtl. Lourdes Cahuich

2

Introducción (cont.)• Pensemos en un auto, entramos en el auto, lo
encendemos, y ya sabemos qué va a suceder:
el auto se va a mover.
• Si ahora salimos de dicho auto y entramos a
otro auto diferente, podemos hacer lo mismo
y tendremos el mismo resultado.
• Ambos tienen la misma interface, y realmente
no nos interesa cómo funcionan por dentro.
Mtl. Lourdes Cahuich

3

Ejemplo de video juego
• Imagine que va a programarun videojuego
corto: naves espaciales que vuelan, lanzan
rayos láser a todos los demás.
• Siempre que una nave reciba un impacto de
láser, va a reaccionar de alguna manera.
• En un sistema polimórfico, cada uno de los
objetos debe saber cómo reaccionar cuando
recibe un impacto de láser.
Mtl. Lourdes Cahuich

4

Ejemplo
• Una nave controlada por la computadora,
podría reaccionar recibiendo ciertodaño por el
impacto, y además disparando a aquella nave
que le disparó primero.
• Una nave controlada por el usuario podría
recibir cierto daño y enviar una señal de
vibración al control del jugador.
• Un asteroide podría deshacerse en muchos
pedazos
Mtl. Lourdes Cahuich

5

Ejemplo
• El punto es que el motor del juego no necesita
saber cómo reaccionan los objetos cuando
reciben un impacto,simplemente les avisa
que recibieron un impacto láser.
• Lo único que el objeto necesita saber es que
fue impactado y él se hace cargo de los
detalles.

Mtl. Lourdes Cahuich

6

Polimorfismo básico
• Imaginemos que tenemos un árbol de
herencia muy sencillo: una raíz y dos hojas.
• La raíz es “NaveEspacial”, y las hojas son
“NaveCombate” y “NaveCargamento”.
• Esta estructura de herencia la vemos enla
siguiente figura.

Mtl. Lourdes Cahuich

7

Diagrama UML
NaveEspacial

NaveCombate

Mtl. Lourdes Cahuich

NaveCargamento

8

Polimorfismo básico
• Podemos crear objetos de la manera habitual:
NaveEspacial n = new NaveEspacial();
NaveCargamento c = new NaveCargamento();

• Esto no es nada nuevo, pero el hecho de que una
NaveCargamento es una NaveEspacial podemos hacer
este truquito:
NaveEspacialn = new NaveCargamento();
Mtl. Lourdes Cahuich

9

Polimorfismo básico
• Este código es legal, una NaveCargamento es
una NaveEspacial.
• Sin embargo, la referencia NaveEspacial no
tiene permitido acceder a cualquier parte
específica de la clase NaveCargamento que no
haya heredado de NaveEspacial
• Imaginemos el siguiente código:

Mtl. Lourdes Cahuich

10

NaveEspacial n = new
NaveCargamento();s.CargaCombustible(); //bien
//s.SubeCargamento();
/*Error de compilador: nave espacial
no puede subir cargamento*/
NaveCargamento c = (NaveCargamento)
n;
//lo convertimos en NaveCargamento
c.SubeCargamento(); //bien
Mtl. Lourdes Cahuich

11

Polimorfismo básico
• Nota: el polimorfismo no se puede usar a la
inversa. Si escribiéramos:
NaveCargamento = new NaveEspacial();

• Tendríamos un error decompilador, ya que
una NaveEspacial no es una NaveCargamento

Mtl. Lourdes Cahuich

12

Funciones virtuales
• Uno de los aspectos más importantes del
polimorfismo es la idea de una función virtual.
• Una función virtual permite definir una
función en una clase base, y después
cambiarla en la(s) clase(s) derivada(s).

Mtl. Lourdes Cahuich

13

Funciones virtuales
• Digamos que por default, todaslas naves van a
reaccionar de alguna manera cuando sean
impactadas por láseres.
• Definimos ese comportamiento dentro de la
clase base NaveEspacial.
• Después decidimos cómo va a manejar el
impacto una NaveCombate, que seguramente
será diferente a cómo lo manejará una
NaveCargamento, pues tiene mejor armadura.
Mtl. Lourdes Cahuich

14

Ejemplo sin funciones virtuales
class NaveEspacial{...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Polimorfismo
  • Polimorfismo
  • Polimorfismo
  • Polimorfismo
  • Polimorfismos
  • Polimorfismo
  • Polimorfismos
  • Polimorfismo

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS