Universal Network Objects (UNO)

From Apache OpenOffice Wiki
Jump to: navigation, search
doc OOo
Book.png

Apache OpenOffice には Universal Network Objects (UNO) という形式のプログラミングインターフェースが用意されています。これはオブジェクト指向型のプログラミングインターフェースであり、Apache OpenOffice の場合、プログラム内から行う Office パッケージへのアクセスのタイプごとに細分化されています。

Apache OpenOffice Basic は手続き型のプログラミング言語であるため、UNO の導入に伴い、いくつかの機能が追加されています。

Apache OpenOffice Basic で Universal Network Object を使用するにあたっては、使用するオブジェクトに対応した変数宣言が必要です。この宣言は Dim 命令で実行します (詳細は「Apache OpenOffice Basic プログラミング用の言語」を参照)。オブジェクトを宣言する際には、宣言型に Object を指定します。

Dim Obj As Object

たとえば上記のサンプルコードは、Obj という名前のオブジェクトを宣言しています。

新規作成したオブジェクト変数は、使用する前に初期化する必要があります。このような処理には、createUnoService 関数を使用します。

Obj = createUnoService("com.sun.star.frame.Desktop")

上記のサンプルコードの場合、新規作成したオブジェクトへの参照情報を変数 Obj へ割り当てています。com.sun.star.frame.Desktop はいわゆるオブジェクト型に類似したものですが、UNO の用語ではこのようなものを「型」ではなく「サービス」と呼んでいます。UNO の流儀に従えば、上記の Obj は「com.sun.star.frame.Desktop サービスをサポートしたオブジェクトに対する参照」と表現できます。つまり Apache OpenOffice Basic で使われる「サービス」という用語は、他の言語で言う「型 (タイプ)」や「クラス」に該当します。

ただし Universal Network Object の持つ大きな特徴として、複数のサービスを同時にサポートできる点があります。このため UNO のサービスの中には他のサービスをサポートしているものが存在し、1 つのオブジェクトで複数のサービスを扱うケースがあります。たとえば先のサンプルコードでは com.sun.star.frame.Desktop サービスをサポートしたオブジェクトを作成しましたが、このオブジェクトもその他のサービスとして、ドキュメント読み込み用およびプログラム終了用のサービスをサポートしています。

Documentation note.png VBA のオブジェクト構造は、所属するクラスにより定義しますが、Apache OpenOffice Basic のオブジェクト構造は、サポートするサービスにより定義します。VBA のオブジェクトは、常に 1 つのクラスに対して割り当てられます。これに対して、Apache OpenOffice Basic のオブジェクトは複数のサービスをサポートできます。


Content on this page is licensed under the Public Documentation License (PDL).
Personal tools