ラッパー関数

法律: IT 百科事典

ラッパー関数

ラッパー関数とは、二次的なサブルーチンの呼び出し[1]や追加のコンピュータ操作をほとんど必要としないシステム・コールを主な目的とした、ソフトウェアライブラリやコンピューター・プログラムの中のサブプログラムのことである。

目次

1 目的
 1.1 プログラミングの便利さ
 1.2 クラス/オブジェクト・インタフェースを適応させる
 1.3 コードのテスト
 1.4 多重継承
2 ライブラリ関数とシステム・コール
3 関連項目
4 参考文献

目的

 ラッパー関数は委譲の手段であり、数多くの目的で使用できる。

プログラミングの便利さ

ラッパー関数はコンピューター・プログラムをより容易に書けるようにするために使うことができる。この一つの例はJava AWTライブラリにあるMouseAdapterとその同種のクラスである[2]。ラッパー関数は、サードパーティのライブラリ関数を使用するアプリケーションの開発において役に立つ。ラッパーはサードパーティの関数それぞれに対して書くことが可能であり、ネイティブ・アプリケーションで使用することができる。サードパーティの関数の変更やアップデートのときにも、ネイティブ・アプリケーションの中のサードパーティ関数のインスタンスすべてを変更するのではなく、ネイティブ・アプリケーションの中のラッパーのみ修正が必要になる。

クラス/オブジェクト・インタフェースを適応させる

主要な記事:アダプタ・パターン

ラッパー関数は、既存のクラスやオブジェクトを適応させ、異なるインタフェースをもたせるために利用することが可能である。これは、既存のライブラリ・コードを使用しているときに特に便利である。

コードのテスト

ラッパー関数は、既存のシステム関数のエラーチェックルーチンを書くときに利用でき、関数の呼び出しごとに同じエラーチェックを繰り返すことによるコードの長さの大幅な増大を避けられる[3]。元の関数を呼び出しているものすべてをラッパーの呼び出しに置き換えることができ、プログラマは一度ラッパーを書くことでエラーチェックのことを気にせずにいられる。テストドライバは一種のラッパー関数であり、一つ一つのありうる経路を正確にたどるために、様々な設定やパラメータでコードモジュールを実行し、通常はそれを繰り返し呼び出す。それは提供可能なコードではないが使い捨てのコードでもなく、通常はリグレッションテストで使用するために保持されている。インタフェース・アダプタは一種のラッパー関数であり、ユーザにとってよりわかりやすく適切なものにするという目的で、コードモジュールのインタフェースの簡素化や調整、敷衍を行う。変数の名前の変更や結合、デフォルト値の設定などを行うこともある。

多重継承

基底クラスの多重継承に対応していないプログラミング言語において、ラッパー関数はそれを模するために使うことも可能である。以下の例は、連結リストとハッシュセットの「継承」Javaクラスの一部である。

public class StackSet implements Stack, Set {

    private LinkedList stack;
    private HashSet set;

    public boolean push(Object o) {
        if (set.add(o)) return stack.push(o);
        else return false;
        }

    public Object pop() {
        Object o = stack.pop();
        set.remove(o);
        return o;
    }

    public boolean contains(Object o) {
        return set.contains(o);
    }

}

ライブラリ関数とシステム・コール

標準Cライブラリにあるような多くのライブラリ関数はシステム・コールの抽象化のためのインタフェースとして機能する。GNU Cライブラリにおけるforkとexecveの関数はこの例である。それらはより低い階層のforkとexecveのシステム・コールをそれぞれ呼び出す。

これは、「system call」という用語や、同様に名付けられたそれらがラッパーしているシステム・コールよりも高い階層のライブラリー呼び出しのことを指す「syscall」という用語の不正確な使用につながる可能性がある。

関連項目

ラッパー・ライブラリ

アダプタ・パターン日本語版

デコレータ・パターン日本語版

委譲(プログラミング)

転送(オブジェクト指向プログラミング)

・他の言語のための言語結合ラッパー(日本語版

SWIG(Simplified Wrapper and Interface Generator)自動でのラッパー生成(日本語版

入れ子関数

部分適用

参考文献

1. Reselman, Bob; Peasley, Richard; Pruchniak, Wayne (1998). Using Visual Basic 6. Que. p. 446. ISBN 9780789716330.

2. The Java Tutorials

3. Stevens, Richard; Fenner, Bill; Rudoff; Andrew M. (2003). UNIX Network Programming. Addison-Wesley. pp. 5–6, 29. ISBN 9780131411555.

 2017-05-27 11:24:02 / shikimi
原文サイトを表示
[ 原文 ] https://en.wikipedia.org/wiki/Wrapper_function
Creative Commons License この作品は、クリエイティブ・コモンズ・ライセンスの下でライセンスされています。
クリエイティブ・コモンズ・ライセンス