¿Qué es la herencia de protocolo?

De los impresionantes documentos de Apple sobre el tema de la “herencia de protocolos”:

Un protocolo puede heredar uno o más protocolos y puede agregar requisitos adicionales además de los requisitos que hereda.

La herencia es una característica de la Programación Orientada a Objetos (OOP).

En OOP, el código está estructurado en clases. Un ejemplo de una clase es: Coche, Persona, Casa: todas las entidades tangibles o conceptuales. Las clases tienen métodos, como Car.drive (), Person.sayHello () y House.build ().

Los protocolos en Swift funcionan como acuerdos entre clases. Al igual que un protocolo en el ejército, o en un hospital, define qué tareas deben cumplirse en caso de emergencia, un protocolo en Swift define qué métodos deben estar disponibles.

Un ejemplo: Mario es un PizzaMaker (clase) independiente. Realmente no le importa a quién hace pizzas: restaurante (clase), PrivatePerson (clase) o BachelorParty (clase). Siempre y cuando todos se adhieran a un protocolo: cocina. Mario solo puede hacer pizza cuando hay una Cocina disponible, y especialmente cuando la Cocina tiene el método “useOven”.

El protocolo Kitchen, con el método useOven, es un acuerdo entre PizzaMaker y cualquier otra clase. ¿El beneficio? Independientemente de la implementación de la clase objetivo, Mario puede hacer pizzas incluso si no sabe quién o dónde las está haciendo. ¡Mientras haya una cocina!

Esto hace que el código de computadora sea modular, con responsabilidades claras y una seguridad mejorada en tiempo de compilación.

Bien, pero ¿qué pasa con la herencia?

La herencia simplemente significa que puede tomar el protocolo, extenderlo y agregarle más métodos. Crea un nuevo protocolo, codifica que hereda del otro protocolo y le agrega más métodos. Todos los métodos antiguos existen, y los recién agregados.

Algunos ejemplos para “Cocina”

  • Cocina -> SuperKitchen, agrega el método “useBigOven”
  • Cocina -> RamsayKitchen, agrega el método “shoutProfanity”
  • Cocina -> AsianKitchen, agrega el método “useWok”

Lectura adicional: El lenguaje de programación Swift: protocolos

¡Buena suerte!

Reinder