Eine Wrapperfunktion ist eine Funktion (auch Unterprogramm genannt ) in einer Softwarebibliothek oder einem Computerprogramm , deren Hauptzweck darin besteht, ein anderes Unterprogramm [ 1 ] oder einen Systemaufruf mit geringem oder keinem zusätzlichen Rechenaufwand aufzurufen. Wrapperfunktionen vereinfachen die Programmierung, indem sie die Details der Implementierung eines Unterprogramms abstrahieren.

Zweck

Wrapper-Funktionen sind ein Mittel zur Delegation und können für eine Reihe von Zwecken eingesetzt werden.

Programmierkomfort

Wrapper-Funktionen vereinfachen das Schreiben von Computerprogrammen. Beispielsweise demonstrieren die MouseAdapterKlassen `std::require` und ähnliche Klassen in der Java AWT- Bibliothek dies. [ 2 ] Sie sind nützlich bei der Entwicklung von Anwendungen, die Funktionen von Drittanbieterbibliotheken verwenden. Für jede dieser Funktionen kann ein Wrapper geschrieben und in der nativen Anwendung verwendet werden. Sollten sich die Drittanbieterfunktionen ändern oder aktualisiert werden, müssen nur die Wrapper in der nativen Anwendung angepasst werden, anstatt alle Instanzen der Drittanbieterfunktionen in der nativen Anwendung zu ändern.

Anpassung von Klassen-/Objektschnittstellen

Wrapper-Funktionen können verwendet werden, um eine bestehende Klasse oder ein Objekt so anzupassen , dass es eine andere Schnittstelle besitzt. Dies ist besonders nützlich bei der Verwendung von bereits vorhandenem Bibliothekscode.

Code-Tests

Wrapperfunktionen ermöglichen das Schreiben von Fehlerprüfungsroutinen für bestehende Systemfunktionen, ohne den Codeumfang durch die wiederholte Fehlerprüfung bei jedem Funktionsaufruf erheblich zu vergrößern. [ 3 ] Alle Aufrufe der Originalfunktion können durch Aufrufe des Wrappers ersetzt werden, sodass sich der Programmierer nach der Implementierung des Wrappers nicht mehr um die Fehlerprüfung kümmern muss. Ein Testtreiber ist eine Art Wrapperfunktion, die ein Codemodul testet, typischerweise durch wiederholte Aufrufe mit unterschiedlichen Einstellungen oder Parametern, um jeden möglichen Pfad gründlich zu verfolgen. Er ist kein auslieferbarer Code, aber auch kein Wegwerfcode, sondern wird üblicherweise für Regressionstests aufbewahrt . Ein Schnittstellenadapter ist ebenfalls eine Art Wrapperfunktion, die die Schnittstelle eines Codemoduls vereinfacht, anpasst oder erweitert, um sie für den Benutzer verständlicher oder relevanter zu gestalten. Er kann Parameter umbenennen, kombinieren, Standardwerte für Parameter festlegen usw.

Mehrfachvererbung

In Programmiersprachen , die keine Mehrfachvererbung von Basisklassen unterstützen, können Wrapper-Funktionen verwendet werden, um dies zu simulieren. Unten sehen Sie ein Beispiel für einen Teil einer Java -Klasse, die von `BaseClass` java.util.LinkedListund `BaseClass` erbt java.util.HashSet. Weitere Implementierungsdetails finden Sie in der Methode ` get`.

java.util.HashSet importieren ; import java.util.LinkedList ;public class Test implements LinkedList , HashSet { @Override // enthält Datenmember und Datenmethoden // kovarianter Rückgabewert }

Bibliotheksfunktionen und Systemaufrufe

Viele Bibliotheksfunktionen , wie beispielsweise jene der C-Standardbibliothek , dienen als Schnittstellen zur Abstraktion von Systemaufrufen . Die Funktionen `fork` und ` execve` in ` glibc` sind Beispiele dafür. Sie rufen die entsprechenden Systemaufrufe auf niedrigerer Ebene auf.

Dies kann dazu führen, dass die Begriffe „Systemaufruf“ und „syscall“ fälschlicherweise für Bibliotheksaufrufe höherer Ebene verwendet werden, anstatt für die gleichnamigen Systemaufrufe, die sie umschließen. [ 4 ] [ 5 ]

Hilfsfunktion

Eine Hilfsfunktion ist eine Funktion, die Teile einer Berechnung gruppiert , indem sie beschreibende Namen vergibt und die Wiederverwendung der Berechnungen ermöglicht. [ 6 ] Obwohl nicht alle Wrapper Hilfsfunktionen sind, sind alle Hilfsfunktionen Wrapper. Ein bemerkenswertes Anwendungsgebiet von Hilfsfunktionen – die Gruppierung häufig verwendeter Operationen – ist die dynamische Binärübersetzung , bei der Hilfsfunktionen einer bestimmten Architektur zur Übersetzung von Befehlen von einem Befehlssatz in einen anderen verwendet werden. [ 7 ]

Siehe auch

Referenzen

  1. ^ Reselman, Bob; Peasley, Richard; Pruchniak, Wayne (1998). Using Visual Basic 6. Que. S. 446. ISBN 9780789716330Die
  2. ^ Die Java-Tutorials
  3. ^ Stevens, Richard; Fenner, Bill; Rudoff; Andrew M. (2003). UNIX-Netzwerkprogrammierung . Addison-Wesley. S.  5–6 , 29. ISBN 9780131411555Die
  4. ^ „syscalls(2) - Linux manual page“ . man7.org . Abgerufen am 25.04.2020 .
  5. ^ „Systemaufrufe (Die GNU C-Bibliothek)“ . www.gnu.org . Abgerufen am 25.04.2020 .
  6. ^ Fisler, Kathi (2005). „CS 1101: Hilfsfunktionen“ . Worcester Polytechnic Institute . Archiviert vom Original am 7. Mai 2021. Abgerufen am 17. November 2021 .
  7. ^ Wang, Wenwen (3. März 2021). Helper function inlining in dynamic binary translation . CC: Compiler Construction. New York, Vereinigte Staaten: Association for Computing Machinery . S. 107. doi : 10.1145/3446804.3446851 . ISBN 978-1-4503-8325-7Die