class Forma:
def dibujar(self):
raise NotImplementedError("Este método debe ser sobrescrito por las clases derivadas")
class Circulo(Forma):
def dibujar(self):
print("Dibujando un Círculo")
class Cuadrado(Forma):
def dibujar(self):
print("Dibujando un Cuadrado")
formas = [Circulo(), Cuadrado()]
for forma in formas:
forma.dibujar()
"""La clase Forma es una clase base abstracta que define el método dibujar. En Python, a diferencia de C++, se declara un método como abstracto lanzando una excepción NotImplementedError. Esto asegura que cualquier clase derivada de Forma debe sobrescribir el método dibujar, o de lo contrario, se producirá un error en tiempo de ejecución.
En C++, se utilizaría un método virtual puro, declarado con virtual void dibujar() const = 0;, para lograr lo mismo. En Python, no existe una palabra clave como override que se utiliza en C++ para indicar la sobrescritura de un método de la clase base. En su lugar, simplemente se define el método en la clase derivada, confiando en el tipado dinámico del lenguaje.
Las clases Circulo y Cuadrado sobrescriben el método dibujar de la clase Forma. Python permite esta sobrescritura directamente, y no requiere ninguna palabra clave adicional para indicar que un método está sobrescribiendo uno de la clase base.
En el main, se crea una lista de objetos formas que contiene instancias de Circulo y Cuadrado. Al iterar sobre esta lista y llamar al método dibujar en cada objeto, se demuestra el polimorfismo, donde el método apropiado es llamado dependiendo del tipo del objeto en tiempo de ejecución."""
To embed this project on your website, copy the following code and paste it into your website's HTML: