Clases y objetos en Python VI
Polimorfismo
El concepto de polimorfismo en la programación orientada a objetos se refiere a la capacidad que tienen los objetos de cambiar de una clase de objeto a otra dependiendo del contexto en que se encuentre. Por ejemplo un vehículo puede convertirse en una moto, un camión o un automóvil con todas sus propiedades y métodos particulares dependiendo de la circunstancia. En Python, al ser un lenguaje de programación débilmente tipado, el polimorfismo se puede hacer de manera mucho mas fácil que en otros lenguajes de progamación. Consideremos por un momento la necesidad de crear clases para diferentes tipos de vehículos tales como automovil, triciclo, moto y camión, en donde el auto se desplaza sobre 4 ruedas, el triciclo sobre 3, la moto sobre 2 y el camión sobre 6, necesitamos crear un método que muestra por pantalla el tipo de vehículo y sobre cuantas ruedas se desplaza y posteriormente llamar a éste método para ejecutarlo.
Con lo que se ha visto hasta ahora en POO en Python podriamos realizar un código como el que sigue:
import os
os.system('cls')
class automovil():
def desplazamiento(self):
print('Este es un automóvil, por lo tanto el desplazamiento es sobre 4 ruedas')
class triciclo():
def desplazamiento(self):
print('Este es un triciclo, por lo tanto el desplazamiento es sobre 3 ruedas')
class moto():
def desplazamiento(self):
print('Esta es una moto, por lo tanto el desplazamiento es sobre 2 ruedas')
class camion():
def desplazamiento(self):
print('Este es un camión, por lo tanto el desplazamiento es sobre 6 ruedas')
vehiculo01=automovil()
vehiculo02=triciclo()
vehiculo03=moto()
vehiculo04=camion()
vehiculo01.desplazamiento()
vehiculo02.desplazamiento()
vehiculo03.desplazamiento()
vehiculo04.desplazamiento()
Resultado:
Este es un automóvil, por lo tanto el desplazamiento es sobre 4 ruedas
Este es un triciclo, por lo tanto el desplazamiento es sobre 3 ruedas
Esta es una moto, por lo tanto el desplazamiento es sobre 2 ruedas
Este es un camión, por lo tanto el desplazamiento es sobre 6 ruedas
Como podemos ver se han creado 4 diferentes tipos de objetos que son instancias de las 4 diferentes cases de vehículos definidos en las definiciones de clase. Luego para acceder a los métodos de dichas clases se han ejecutado los métodos de cada objeto instanciado. Si bien el código hace su trabajo, es posible gracias al polimorfismo utilizar un solo objeto que muestre el comportamiento definido en cada clase dependiendo de la circunstancia. La manera de resolver el planteamiento anterior utilizando polimorfismo sería como sigue:
import os
os.system('cls')
class automovil():
def desplazamiento(self):
print('Este es un automóvil, por lo tanto el desplazamiento es sobre 4 ruedas')
class triciclo():
def desplazamiento(self):
print('Este es un triciclo, por lo tanto el desplazamiento es sobre 3 ruedas')
class moto():
def desplazamiento(self):
print('Esta es una moto, por lo tanto el desplazamiento es sobre 2 ruedas')
class camion():
def desplazamiento(self):
print('Este es un camión, por lo tanto el desplazamiento es sobre 6 ruedas')
def desplazamiento(vehiculo):
vehiculo.desplazamiento()
vehiculo01=automovil()
desplazamiento(vehiculo01)
vehiculo01=triciclo()
desplazamiento(vehiculo01)
vehiculo01=moto()
desplazamiento(vehiculo01)
vehiculo01=camion()
desplazamiento(vehiculo01)
Resultado:
Este es un automóvil, por lo tanto el desplazamiento es sobre 4 ruedas
Este es un triciclo, por lo tanto el desplazamiento es sobre 3 ruedas
Esta es una moto, por lo tanto el desplazamiento es sobre 2 ruedas
Este es un camión, por lo tanto el desplazamiento es sobre 6 ruedas
En este ejemplo hemos hecho uso de un solo objeto 'vehiculo01', el cual al ser pasado como argumento en la función desplazamiento cambia de forma ya que en dicha función al llamar al método desplazamiento del objeto recibido sin importar su tipo (automovil, moto, triciclo o camión) Python siembre sabe a cual clase pertenece el método que va a ejecutar. Es importante aclarar que el objeto que cambia de forma es el del parámetro vehiculo de la función desplazamiento. Nótese que a pesar siempre ser el mismo objeto, éste cambia de acuerdo al tipo de objeto que recibe el parámetro de su función.
Comentarios
Publicar un comentario