← Lumbre

Programación Orientada a Objetos · 2.º Clases abstractas e interfaces

← Volver a todos los contenidos
Portada de Clases abstractas e interfaces

Clases abstractas e interfaces

✦ Una clase abstracta es un contrato: dice todo lo que me herede DEBE saber hacer esto · Programación Orientada a Objetos · Programación · en menos de 4 minutos

Roadwise Consulting

Firmado y verificado · Fernando Castro

Objetivo: Definir contratos con clases abstractas e interfaces para forzar a las subclases a implementar ciertos comportamientos.

4 min 18–30 años
Autoevaluación
Más
Clases abstractas e interfaces

Herramientas de la lección

◉ Entrar a La Matrix Sorpréndeme

Sobre este contenido

Ir a

Volver a Objetos Cursos Explorar Mi cuenta Salir del modo estudio

Clases abstractas e interfaces

Ilustracion de programacion orientada a objetos: jerarquia de clases con herencia y encapsulamiento.
Principios de la programacion orientada a objetos: clases, herencia y polimorfismo.

Mapa conceptual

  • Programacion OO
    • Clases
      • Objetos
      • Atributos
      • Metodos self
    • Encapsulamiento
      • Public
      • Private
      • Properties
    • Herencia
      • Polimorfismo
      • Abstractas
      • Interfaces
    • Composicion
      • Sobre herencia
      • Delegacion
      • Acoplamiento
    • Proyecto
      • Paquetes
      • Modulos
      • Convenciones

Clase abstracta

Una clase abstracta define métodos que la subclase está obligada a implementar. No se puede crear un objeto de ella directamente: funciona como base incompleta que fija una estructura común. En Python se construye con el módulo abc y el decorador abstractmethod.

El método abstracto

Un método abstracto se declara sin cuerpo (o con pass): es una promesa. Cualquier subclase concreta que no lo reemplace quedará ella misma como abstracta y tampoco podrá instanciarse. Así el compilador (en otros lenguajes) o la creación de objeto (en Python) avisa del incumplimiento.

Interfaz vs clase abstracta

  • Interfaz: solo contratos, ningún estado ni implementación. «Qué sabes hacer».
  • Clase abstracta: contratos además de algo de código e estado compartido. «Qué eres y qué haces».

Para qué sirven

Documentan el diseño: quien lee la base sabe qué debe ofrecer toda implementación. Y obligan: si añades un método abstracto, toda subclase que lo omita fallará al instanciarse, no cuando ya esté en producción.

La base abstracta mezcla contrato y reutilización; la interfaz solo contrato.
ConceptoSe instanciaContieneUso
Clase concretaSitodo implementadoobjetos reales
Clase abstractaNométodos abstractos y tal vez códigobase para heredar
InterfazNosolo firmas de métodoscontrato de comportamiento

¿Qué ocurre al intentar crear un objeto de una clase abstracta en Python?

El patrón de la estrategia

Una base abstracta permite escribir código que dependa del contrato («algo que puede procesar()») y no de implementaciones concretas. Puedes intercambiar estrategias (un normalizador, un validador) siempre que cumplan el contrato: bajo acoplamiento con un esqueleto común.

ABC y mixin

En Python, heredar de ABC marca la clase como abstracta. Un mixin, en cambio, es una clase pequeña que aporta comportamiento para componerse, no para ser una jerarquía. Ambos ayudan a organizar sin sobrecargar la herencia.

Una clase con un método abstracto puede instanciarse si el resto de métodos están implementados.

Interfaces implícitas: protocolo

Python no fuerza tipos, así que a menudo una interfaz es informal: se espera que el objeto tenga ciertos métodos (duck typing). Los Protocol de tipado estructurado permiten declarar esas interfaces de forma explícita para el chequeo estático, sin forzar la herencia.

Cuándo usarlas

  • Hay un concepto general que nunca se instancia solo: usa una base abstracta.
  • Solo quieres un contrato, sin compartir código: usa una interfaz (o Protocol).
  • Necesitas que el error aparezca al instanciar, no al ejecutar: abstracta.

Errores frecuentes

  • Hacer abstracta una clase que sí tendría instancias lógicas.
  • Dejar métodos concretos que en realidad todo hijo debería redefinir.
  • Confundir interfaz con jerarquía profunda: a veces basta un Protocol y nada de herencia.

Clasifica cada elemento:

Arrastra cada ficha a su categoría (o tócala y luego toca la categoría). También puedes usar el teclado.

Video complementario
Recurso audiovisual para reforzar los conceptos.

Diseña una base abstracta Exportador con métodos abstractos escribir() y soporta_formato(). Describe dos subclases concretas (CSV, JSON) y explica qué ganarías al dejar la base abstracta.

Tu texto se guarda sólo en este dispositivo.

Las respuestas y tu progreso se guardan sólo en este dispositivo. Contenido firmado por su autoría mediante Lumbre.

Autoevaluación

Comprueba lo que aprendiste

2 preguntas · ves cada respuesta al momento · el resultado queda guardado en tu historial

Iniciar autoevaluación
Más sobre esta lección

Rutas vivas

¿Y ahora qué? Elige el camino por lo que necesitas

No es un listado al azar: cada camino responde una pregunta distinta y te dice por qué.

Otra forma de comprenderlo

✦ Explorar el universo completo
Explora temas relacionados

Conceptos

Comentarios

Inicia sesión para comentar.

Todavía no hay comentarios. Sé la primera persona en opinar.