Curso de Python. POO VII  Herencia II. Vídeo 30

Curso de Python. POO VII Herencia II. Vídeo 30

Introducción al curso de programación en Python

Resumen de la sección: En esta sección, el instructor da la bienvenida a los estudiantes y presenta el tema del curso: programación orientada a objetos con Python. Se menciona que en este video se hablará sobre la herencia y la sobreescritura de métodos.

Herencia y creación de clases

  • La herencia permite que una clase herede propiedades y métodos de otra clase.
  • Se muestra un ejemplo de una clase "Vehículo" con un constructor y cuatro métodos.
  • Se crea una clase "Moto" que hereda de la clase "Vehículo".
  • Al crear una instancia de la clase "Moto", se observa cómo se heredan los métodos y propiedades de la clase "Vehículo".

Sobreescritura de métodos

  • Se plantea la pregunta sobre qué comportamiento único puede tener una moto en comparación con otros vehículos.
  • Se propone agregar el comportamiento del "caballito" a la clase "Moto", que consiste en levantar la rueda delantera mientras circula solo con la rueda trasera.
  • Se crea una propiedad llamada "h_caballito" y un método llamado "caballito" para implementar este comportamiento.

Comportamientos adicionales de las motos

  • Después de agregar el comportamiento del caballito, ahora una instancia de tipo Moto tiene seis métodos disponibles: arrancar, acelerar, frenar, estado, caballito (nuevo) y constructor.
  • Estos comportamientos permiten que una moto realice acciones específicas que no pueden hacer otros vehículos.

Creación de la clase Moto y comportamiento del caballito

Resumen de la sección: En esta sección, el instructor muestra cómo implementar el comportamiento del "caballito" en la clase "Moto".

Implementación del comportamiento del caballito

  • Se crea una propiedad llamada "h_caballito" y se inicializa como una cadena vacía.
  • Se crea un método llamado "caballito" que asigna el valor "haciendo el caballito" a la propiedad "h_caballito".
  • Ahora una instancia de tipo Moto puede realizar el caballito utilizando el método "caballito".

Comportamientos disponibles para las motos

  • Después de agregar el comportamiento del caballito, una instancia de tipo Moto tiene seis métodos disponibles: arrancar, acelerar, frenar, estado, caballito y constructor.
  • Estos comportamientos permiten que una moto realice acciones específicas que no pueden hacer otros vehículos.

Conclusiones finales

Resumen de la sección: En esta sección final, el instructor resume los conceptos aprendidos sobre herencia y sobreescritura de métodos en Python.

Resumen final

  • La herencia permite que una clase herede propiedades y métodos de otra clase.
  • La sobreescritura de métodos permite modificar o agregar comportamientos específicos en las clases hijas.
  • En este curso se ha mostrado cómo implementar estos conceptos utilizando Python.

Método estado de la clase vehículo

Resumen de la sección: En esta sección se explica que el método "estado" heredado de la clase vehículo nos proporciona información sobre la marca y modelo del vehículo, así como si está en marcha, acelerando o frenando. Sin embargo, este método no informa si el vehículo está haciendo un caballito. No tendría sentido llamar al método "estado" de la clase vehículo para obtener esta información.

Método estado y propiedad caballito

  • El método "estado" no informa si el vehículo está haciendo un caballito.
  • La propiedad "caballito" pertenece a la clase moto y no a la clase vehículo.
  • No tiene sentido llamar al método "caballito" en un objeto de tipo vehículo, ya que no todos los vehículos pueden hacer un caballito.

Creación del método estado en la clase moto

  • La solución es crear un nuevo método "estado" dentro de la clase moto.
  • Este nuevo método debe informar sobre la marca, modelo y otras características del vehículo, incluyendo si está haciendo un caballito.
  • Para lograr esto, se debe sobreescribir el método "estado" heredado de la clase padre (vehículo).
  • Se crea un nuevo método con el mismo nombre y parámetros en la clase moto.

Sobreescritura de métodos

  • Cuando una clase hereda de otra y tiene un método con el mismo nombre que el de su clase padre, se produce una sobreescritura del método.
  • En este caso, al llamar al método "estado" en un objeto de tipo moto, se ejecuta el método "estado" específico de la clase moto y no el de la clase vehículo.
  • Esto permite que el método "estado" de la clase moto informe sobre si el vehículo está haciendo un caballito.

Corrección del error en el método caballito

Resumen de la sección: En esta sección se corrige un error en el método "caballito" que impide que se muestre correctamente si el vehículo está haciendo un caballito. Se explica que al utilizar la variable o propiedad "caballito" sin referenciarla correctamente, no se obtiene el resultado esperado.

Corrección del error en el método caballito

  • Se identifica un error en el código del método "caballito".
  • El error consiste en no utilizar correctamente la referencia a la variable o propiedad "caballito".
  • Al corregir este error y ejecutar nuevamente el programa, se muestra correctamente si el vehículo está haciendo un caballito.

Uso opcional del método caballito

Resumen de la sección: En esta sección se menciona que hacer un caballito es una acción opcional para un objeto de tipo moto. Si no se llama al método "caballito", este nunca se ejecutará y no mostrará información sobre si el vehículo está haciendo un caballito.

Uso opcional del método caballito

  • Hacer un caballito es una acción opcional para un objeto de tipo moto.
  • Si no se llama al método "caballito", este nunca se ejecutará.
  • En ese caso, el valor mostrado por el método "estado" para la variable "caballito" será el valor inicial asignado, que en este caso es una cadena de texto vacía.

Herencia y sobreescritura de métodos

Resumen de la sección: En esta sección se explica cómo funciona la herencia y la sobreescritura de métodos cuando se crean nuevas clases. Se menciona que si se crea una nueva clase que hereda de otra clase, esta nueva clase heredará el método "estado" correspondiente a la clase padre. Además, se plantea un ejemplo con una clase "quad" y se menciona que un quad sí puede hacer un caballito.

Herencia y sobreescritura de métodos

  • Si se crea una nueva clase que hereda de otra, la nueva clase heredará los métodos de la clase padre.
  • En el ejemplo mencionado, si se crea una clase "quad" que hereda de la clase moto, la clase "quad" también tendrá acceso al método "estado".
  • Un quad sí puede hacer un caballito, por lo tanto, sería útil heredar el método "estado" de la clase moto en este caso.

Creación de una nueva clase furgoneta

Resumen de la sección: En esta sección se plantea crear una nueva clase llamada "furgoneta", que permita cargar objetos y tenga las propiedades y comportamientos definidos en la clase vehículo. Se destaca que no tendría sentido heredar esta nueva clase de la moto, ya que las furgonetas no pueden hacer un caballito.

Creación de una nueva clase furgoneta

  • Se plantea crear una nueva clase llamada "furgoneta".
  • La clase "furgoneta" heredará de la clase vehículo, ya que tiene las mismas propiedades y comportamientos.
  • No tendría sentido heredar la clase "furgoneta" de la clase moto, ya que las furgonetas no pueden hacer un caballito.

Parámetro "carga" en la clase Furgoneta

Resumen de la sección: En esta sección, se discute el parámetro "carga" en la clase Furgoneta y cómo se utiliza para determinar si la furgoneta está cargada o no.

Definición del parámetro carga

  • El parámetro "carga" es una variable que se iguala a "cargar".
  • Se utiliza para preguntar si la variable "cargado" es verdadera.
  • Si es verdadera, el método devuelve un texto indicando que la furgoneta está cargada.
  • Si no es verdadera, el método devuelve un texto indicando que la furgoneta no está cargada.

Creación de una instancia de Furgoneta

Resumen de la sección: En esta sección, se crea una instancia de la clase Furgoneta y se le asigna una marca y un modelo.

Creación de una instancia

  • Se crea una instancia llamada "mi furgoneta".
  • Se le asigna como valor a "mi furgoneta" una nueva instancia de la clase Furgoneta.
  • Se pasa por parámetro una marca y un modelo a la instancia de Furgoneta.

Comportamientos disponibles en el objeto Furgoneta

Resumen de la sección: En esta sección, se muestra cómo utilizar los comportamientos heredados por el objeto Furgoneta desde la clase Vehículo.

Comportamientos disponibles

  • El objeto Furgoneta puede arrancar utilizando el método heredado desde Vehículo.
  • El objeto Furgoneta puede informar su estado utilizando el método heredado desde Vehículo.
  • El objeto Furgoneta puede cargar el vehículo utilizando el método específico "carga".

Diferencias entre Furgoneta y Moto

Resumen de la sección: En esta sección, se explican las diferencias entre los objetos de tipo Furgoneta y Moto en relación al comportamiento "carga".

Diferencias entre Furgoneta y Moto

  • La clase Moto no admite carga, por lo que llamar al método "carga" en un objeto de tipo Moto generará un error.
  • El método "carga" pertenece a la clase Furgoneta y no a la clase Moto.

Soporte para vehículos eléctricos

Resumen de la sección: En esta sección, se plantea la necesidad de agregar soporte para vehículos eléctricos en el programa.

Creación de una nueva clase

  • Se propone crear una nueva clase llamada "Vehículos Eléctricos".
  • Esta clase proporcionaría información específica sobre características de vehículos eléctricos.

Clase Vehículos Eléctricos

Resumen de la sección: En esta sección, se crea la clase Vehículos Eléctricos con un constructor que inicializa una autonomía predeterminada.

Constructor de Vehículos Eléctricos

  • La clase Vehículos Eléctricos tiene un constructor que recibe como parámetro una autonomía.
  • Este constructor inicializa la variable "autonomía" con el valor pasado por parámetro.

Método "cargar energía" en Vehículos Eléctricos

Resumen de la sección: En esta sección, se agrega un método llamado "cargar energía" a la clase Vehículos Eléctricos para indicar si el vehículo está cargando o no.

Método "cargar energía"

  • El método "cargar energía" indica si el vehículo eléctrico está cargando en ese momento.
  • Si se llama al método, significa que el vehículo está cargando.
  • Si no se llama al método, significa que el vehículo no está cargando.

Características de una bicicleta eléctrica

Resumen de la sección: En esta sección se discuten las características y comportamientos que puede tener una bicicleta eléctrica. Se menciona que una bicicleta eléctrica tiene marca, modelo y es capaz de ponerse en marcha, acelerar y frenar. También se destaca que una bicicleta eléctrica informa sobre su estado y tiene autonomía para cargar su energía.

Comportamientos de una bicicleta eléctrica

  • Una bicicleta eléctrica puede arrancar, acelerar y frenar.
  • La bicicleta eléctrica también informa sobre su estado.
  • Tiene autonomía para cargar su energía.

Herencia múltiple en Python

Resumen de la sección: En esta sección se explica cómo utilizar la herencia múltiple en Python. Se menciona que Python permite heredar de dos o más clases utilizando la sintaxis adecuada. Al heredar de varias clases, automáticamente se obtienen todos los métodos y propiedades de esas clases.

Sintaxis de la herencia múltiple

  • Para heredar de dos clases o más, se utiliza la sintaxis (clase1, clase2) separando las clases por comas.
  • Esto permite que la clase actual herede los métodos y propiedades de las clases indicadas.

Constructor en herencia múltiple

Resumen de la sección: En esta sección se aborda el tema del constructor al utilizar la herencia múltiple. Se destaca que al heredar de varias clases, se da preferencia a la primera clase indicada en la herencia múltiple. Esto puede causar conflictos si las clases tienen constructores con argumentos diferentes.

Problema con el constructor

  • Al heredar de dos clases con constructores diferentes, se da preferencia a la primera clase indicada en la herencia múltiple.
  • Si se intenta llamar al constructor de una clase secundaria que requiere argumentos, puede generar un error si el constructor de la clase principal no los tiene.

Solución al problema del constructor

Resumen de la sección: En esta sección se presenta una solución para evitar errores al utilizar el constructor en herencia múltiple. Se menciona que es posible dejar el constructor sin argumentos o cambiar el orden de las clases en la herencia múltiple para dar prioridad a otra clase.

Solución al problema del constructor

  • Dejar el constructor sin argumentos si no es necesario utilizarlos.
  • Cambiar el orden de las clases en la herencia múltiple para dar prioridad a otra clase y evitar conflictos.

Complejidad de la herencia múltiple

Resumen de la sección: En esta sección se menciona que aunque Python permite la herencia múltiple, su uso puede volverse complejo cuando hay muchas clases involucradas. Se destaca que algunos lenguajes orientados a objetos no soportan esta característica debido a su complejidad.

Complejidad de la herencia múltiple

  • La herencia múltiple puede volverse complicada cuando hay muchas clases involucradas.
  • Algunos lenguajes orientados a objetos no soportan la herencia múltiple debido a su complejidad.
Video description

Continuamos con el tema de la herencia viendo en este vídeo la sobre escritura de métodos y la herencia múltiple. Para más cursos, ejercicios y manuales visita: https://www.pildorasinformaticas.es