Module (48%)
Section (50%)

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

Mira el ejemplo en el editor.

¿Se parece a algo? Sí, por supuesto que lo hace. Se refiere al ejemplo que se muestra al comienzo del módulo cuando hablamos de los conceptos generales de la programación orientada a objetos.

Puede parecer extraño, pero no utilizamos herencia en este ejemplo, solo queríamos mostrarte que no nos limita.

Definimos dos clases separadas capaces de producir dos tipos diferentes de vehículos terrestres. La principal diferencia entre ellos está en cómo giran. Un vehículo con ruedas solo gira las ruedas delanteras (generalmente). Un vehículo oruga tiene que detener una de las pistas.

¿Puedes seguir el código?

  • Un vehículo oruga realiza un giro deteniéndose y moviéndose en una de sus pistas (esto lo hace el método control_de_pista(), el cual se implementará más tarde).
  • Un vehículo con ruedas gira cuando sus ruedas delanteras giran (esto lo hace el método girar_ruedas_delanteras()).
  • El método girar() utiliza el método adecuado para cada vehículo en particular.

¿Puedes detectar el error del código?

Los métodos girar()son muy similares como para dejarlos en esta forma.

Vamos a reconstruir el código: vamos a presentar una superclase para reunir todos los aspectos similares de los vehículos, trasladando todos los detalles a las subclases.



Code

import time

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

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


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

def girar(izquierda):
girar_ruedas_delanteras(izquierda, True)
time.sleep(0.25)
girar_ruedas_delanteras(izquierda, False)
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×