Polimorfismo en Programación Orientada a Objetos

Clase 27 de 63Curso de Python

Contenido del curso

Fundamentos de Programación y Python

Programación Orientada a Objetos en Python

Conceptos avanzados de Python

Métodos y estructura de clases en Python

Resumen

Comprender los cuatro pilares de la programación orientada a objetos no solo es fundamental para escribir mejor código, sino que es una de las preguntas más frecuentes en entrevistas técnicas. A través de un ejercicio práctico con clases como auto, bicicleta y camión, es posible ver cómo la encapsulación, la abstracción, la herencia y el polimorfismo trabajan en conjunto dentro de un sistema real de tienda y clientes.

¿Cómo se construyen las instancias de vehículos y clientes?

El punto de partida es crear instancias concretas a partir de clases que ya han sido definidas previamente. Cada vehículo hereda atributos de la clase padre Vehículo, como marca, modelo y precio [01:06].

  • Se crea un auto de clase Auto con marca Toyota, modelo Corolla y precio de veinte mil.
  • Se crea una bicicleta de clase Bicicleta con marca Yamaha.
  • Se crea un camión de clase Camión con marca Volvo.

Después se instancia un cliente de clase Customer y una tienda sin atributos iniciales. A la tienda se le añaden los tres vehículos mediante el método añadir vehículo [02:24]. Al ejecutar el método que muestra los vehículos disponibles, la consola confirma que los tres están en el inventario.

¿Qué sucede cuando un cliente consulta y compra un vehículo?

El flujo simula un proceso real: el cliente consulta la disponibilidad de un vehículo específico, en este caso el auto [03:18]. Al verificar que está disponible, procede a comprarlo. Tras la compra, al volver a listar los vehículos disponibles, el auto ya no aparece en el inventario, lo que demuestra que la lógica de negocio funciona correctamente.

¿Cómo se reflejan los métodos de consulta y compra en el código?

El objeto Customer utiliza métodos como consultar_disponibilidad y comprar_vehículo para interactuar con la tienda. Esto permite que cada acción quede encapsulada dentro de la clase correspondiente, manteniendo el código organizado y modular.

¿Cuáles son los cuatro pilares de la programación orientada a objetos?

Cada pilar se puede identificar directamente en el código del ejercicio [04:28].

Encapsulación se refiere a que las variables de instancia contienen datos privados del objeto. Los atributos como marca, modelo y precio no se exponen directamente, sino que quedan protegidos dentro de cada clase.

Abstracción significa que solo es posible acceder a esos datos a través de métodos específicos, como get_price o verificar_disponibilidad [04:46]. El usuario del objeto no necesita conocer cómo funcionan internamente; solo utiliza la interfaz pública.

Herencia es el primer pilar que se trabaja en el ejercicio. La clase Auto hereda de la clase padre Vehículo, lo que permite reutilizar atributos y métodos sin duplicar código [05:02].

Polimorfismo es la capacidad de que un mismo método tenga comportamientos distintos según la clase que lo implemente [05:12]. En la clase padre se definen métodos sin funcionalidad concreta. Luego, en Auto, el método indica que el motor está en marcha, mientras que en Bicicleta ese comportamiento no existe porque una bicicleta no tiene motor. El término viene del griego y significa "muchas formas": un mismo nombre de método, pero con una ejecución diferente según el contexto.

¿Por qué es importante pensar en objetos como programador?

Desde el momento en que se comprenden estos pilares, la forma de ver los problemas cambia. Un ejercicio recomendado es observar el entorno e identificar clases e instancias en objetos cotidianos [05:40]. Por ejemplo, una silla puede ser una clase con atributos como material, color y número de patas, y cada silla específica sería una instancia.

Estos cuatro conceptos no solo mejoran la calidad del código, sino que son preguntas habituales en entrevistas técnicas. Más que memorizar definiciones, lo valioso es entender cómo se aplican en situaciones reales. Si quieres afianzar tu comprensión, intenta replicar este ejercicio con tus propias clases y comparte qué objetos de tu día a día lograste modelar.

      Polimorfismo en Programación Orientada a Objetos