stringtranslate.com

Interfaz (programación orientada a objetos)

En programación orientada a objetos , una interfaz o tipo de protocolo [a] es un tipo de datos que actúa como una abstracción de una clase . Describe un conjunto de firmas de métodos , cuyas implementaciones pueden ser proporcionadas por múltiples clases que de otro modo no están necesariamente relacionadas entre sí. [1] Se dice que una clase que proporciona los métodos enumerados en un protocolo adopta el protocolo, [2] o implementa la interfaz. [1]

Si los objetos están completamente encapsulados , el protocolo es la única forma en que otros objetos pueden acceder a ellos. Por ejemplo, en Java , la Comparableinterfaz especifica un método compareTo()que las clases de implementación deben implementar. Esto significa que un método de clasificación, por ejemplo, puede ordenar una colección de cualquier objeto de tipos que implementen la interfaz Comparable, sin tener que saber nada sobre la naturaleza interna de la clase (excepto que dos de estos objetos se pueden comparar mediante compareTo()).

Algunos lenguajes de programación proporcionan soporte de lenguaje explícito para protocolos ( Ada , C# , D , Dart , Delphi , Go , Java , Logtalk , Object Pascal , Objective-C , OCaml , PHP , Racket , Seed7 , Swift , Python 3.8). En lenguajes que soportan herencia múltiple , como C++ , las interfaces se implementan como clases abstractas .

En idiomas sin soporte explícito, los protocolos a menudo todavía están presentes como convenciones. Esto se conoce como tipificación pato . Por ejemplo, en Python , cualquier clase puede implementar un __iter__método y usarse como una colección . [3]

Las clases de tipos en lenguajes como Haskell , o firmas de módulos en ML y OCaml , se usan para muchas de las cosas para las que se usan los protocolos. [ se necesita aclaración ]

En Rust , las interfaces se denominan rasgos . [4]

Ver también

Notas

  1. ^ El uso de estos términos varía según el lenguaje de programación. Java y los lenguajes derivados de él tienden a utilizar "interfaz", mientras que "protocolo" es generalmente más popular en otros lugares.

Referencias

  1. ^ ab "Interfaces: definir el comportamiento para varios tipos". aprender.microsoft.com . Consultado el 16 de noviembre de 2022 .
  2. ^ Miller, BJ (2015). Sams Aprenda usted mismo Swift en 24 horas . Indianápolis, Indiana. pag. 263.ISBN 978-0-672-33724-6. Cualquier tipo puede adoptar un protocolo que le ayude a darle funcionalidad adicional para realizar un conjunto particular de tareas.{{cite book}}: Mantenimiento CS1: falta el editor de la ubicación ( enlace )
  3. ^ "Glosario: documentación de Python 3.11.0". docs.python.org . Consultado el 16 de noviembre de 2022 .
  4. ^ "Rasgos: la referencia de Rust". Enero de 2024.