Module (49%)
Section (51%)

Cómo construir una jerarquía de clases: continuación

Mira el código en el editor nuevamente. Esto es lo que hemos hecho:

  • Definimos una superclase llamada Vehiculo, la cual utiliza el método girar() para implementar un esquema para poder girar, mientras que el giro en si es realizado por cambiardireccion(); nota: dicho método está vacío, ya que vamos a poner todos los detalles en la subclase (dicho método a menudo se denomina método abstracto, ya que solo demuestra alguna posibilidad que será instanciada más tarde).
  • Definimos una subclase llamada VehiculoOruga (nota: es derivada de la clase Vehiculo) la cual instancia el método cambiardireccion() utilizando el método denominado control_de_pista().
  • Respectivamente, la subclase llamada VehiculoTerrestre hace lo mismo, pero usa el método girar_ruedas_delanteras() para obligar al vehículo a girar.

La ventaja más importante (omitiendo los problemas de legibilidad) es que esta forma de código te permite implementar un nuevo algoritmo de giro simplemente modificando el método girar(), lo cual se puede hacer en un solo lugar, ya que todos los vehículos lo obedecerán.

Así es como el el polimorfismo ayuda al desarrollador a mantener el código limpio y consistente.



Code

import time

class Vehiculo:
def cambiardireccion(izquierda, on):
pass

def girar(izquierda):
cambiardireccion(izquierda, True)
time.sleep(0.25)
cambiardireccion(izquierda, False)

class VehiculoOruga(Vehiculo):
def control_de_pista(izquierda, alto):
pass

def cambiardireccion(izquierda, on):
control_de_pista(izquierda, on)

class VehiculoTerrestre(Vehiculo):
def girar_ruedas_delanteras(izquierda, on):
pass

def cambiardireccion(izquierda, on):
girar_ruedas_delanteras(izquierda, on)
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×