stringtranslate.com

Función de envoltura

Una función contenedora es una función (otra palabra para subrutina ) en una biblioteca de software o un programa de computadora cuyo propósito principal es llamar a una segunda subrutina [1] o una llamada al sistema con poco o ningún cálculo adicional. Las funciones contenedoras simplifican la escritura de programas de computadora al abstraer los detalles de la implementación de una subrutina.

Objetivo

Las funciones contenedoras son un medio de delegación y pueden utilizarse para diversos propósitos.

Comodidad de programación

Las funciones contenedoras simplifican la escritura de programas informáticos. Por ejemplo, las MouseAdapterclases y similares de la biblioteca Java AWT lo demuestran. [2] Son útiles en el desarrollo de aplicaciones que utilizan funciones de bibliotecas de terceros. Se puede escribir un contenedor para cada una de las funciones de terceros y utilizarlo en la aplicación nativa. En caso de que las funciones de terceros cambien o se actualicen, solo es necesario modificar los contenedores de la aplicación nativa, en lugar de cambiar todas las instancias de las funciones de terceros en la aplicación nativa.

Adaptación de interfaces de clase/objeto

Las funciones contenedoras se pueden utilizar para adaptar una clase o un objeto existente para que tenga una interfaz diferente. Esto resulta especialmente útil cuando se utiliza código de biblioteca existente.

Prueba de código

Las funciones contenedoras se pueden utilizar para escribir rutinas de comprobación de errores para funciones del sistema preexistentes sin aumentar la longitud de un código en una gran cantidad repitiendo la misma comprobación de errores para cada llamada a la función. [3] Todas las llamadas a la función original se pueden reemplazar con llamadas al contenedor, lo que permite al programador olvidarse de la comprobación de errores una vez que se escribe el contenedor. Un controlador de prueba es un tipo de función contenedora que ejercita un módulo de código, normalmente llamándolo repetidamente, con diferentes configuraciones o parámetros, para seguir rigurosamente cada camino posible. No es código entregable, pero tampoco es código desechable, que normalmente se conserva para su uso en pruebas de regresión . Un adaptador de interfaz es un tipo de función contenedora que simplifica, adapta o amplifica la interfaz de un módulo de código, con la intención de hacerlo más inteligible o relevante para el usuario. Puede cambiar el nombre de los parámetros, combinar parámetros, establecer valores predeterminados para los parámetros y similares.

Herencia múltiple

En un lenguaje de programación que no admita la herencia múltiple de clases base, se pueden utilizar funciones contenedoras para simularla. A continuación, se muestra un ejemplo de parte de una clase Java que "hereda" de LinkedList y HashSet. Consulte Método para obtener más detalles de implementación.

La clase pública Test implementa LinkedList , HashSet {     @Override //contiene miembros de datos y métodos de datos //retorno covariante}

Funciones de biblioteca y llamadas al sistema

Muchas funciones de biblioteca , como las de la biblioteca estándar de C , actúan como interfaces para la abstracción de llamadas del sistema . Las funciones fork y execve de glibc son ejemplos de esto. Llaman a las llamadas del sistema de nivel inferior fork y execve , respectivamente.

Esto puede llevar a usar incorrectamente los términos "llamada al sistema" y "syscall" para referirse a llamadas de biblioteca de nivel superior en lugar de las llamadas al sistema con nombres similares, que envuelven. [4] [5]

Función auxiliar

Una función auxiliar es una función que agrupa partes de un cálculo asignándoles nombres descriptivos y permitiendo la reutilización de los cálculos. [6] Aunque no todos los contenedores son funciones auxiliares, todas las funciones auxiliares son contenedores, y un uso notable de las funciones auxiliares (agrupar operaciones utilizadas con frecuencia) es en la traducción binaria dinámica , en la que las funciones auxiliares de una arquitectura particular se utilizan en la traducción de instrucciones de un conjunto de instrucciones a otro. [7]

Véase también

Referencias

  1. ^ Reselman, Bob; Peasley, Richard; Pruchniak, Wayne (1998). Uso de Visual Basic 6. Que. pág. 446. ISBN 9780789716330.
  2. ^ Los tutoriales de Java
  3. ^ Stevens, Richard; Fenner, Bill; Rudoff; Andrew M. (2003). Programación de redes UNIX. Addison-Wesley. págs. 5-6, 29. ISBN 9780131411555.
  4. ^ "syscalls(2) - Página del manual de Linux". man7.org . Consultado el 25 de abril de 2020 .
  5. ^ "Llamadas al sistema (La biblioteca C de GNU)". www.gnu.org . Consultado el 25 de abril de 2020 .
  6. ^ Fisler, Kathi (2005). «CS 1101: Funciones auxiliares». Instituto Politécnico de Worcester . Archivado desde el original el 7 de mayo de 2021. Consultado el 17 de noviembre de 2021 .
  7. ^ Wang, Wenwen (3 de marzo de 2021). Inserción de funciones auxiliares en la traducción binaria dinámica. CC: Compiler Construction. Nueva York, Estados Unidos: Association for Computing Machinery . p. 107. doi :10.1145/3446804.3446851. ISBN 978-1-4503-8325-7.