delphi.gif (306 バイト) ユニットの概要


ユニットとは、定数、データ型、変数、手続き、関数の集合体です。ユニットは、プログラムに組み込み可能な宣言ライブラリであり、プログラムを分割に別々にコンパイルするためのものです。このようにしてプログラムを分割して別々にコンパイルできるようにすると、次の利点があります。

通常、相互に関連を持った宣言をひとつのユニットにまとめます。例えば、Stringsユニットは、NULLで終わる文字列(PChar)を処理するルーチンのすべての宣言をまとめたものです。


(注意)Pascalでは手続きや関数の本体なども宣言の一種とみなされます。

 

 


-

ユニットの構造

ユニットはインターフェース部(interface)と実現部(implementation)に分けられています。ユニットを使用するときは、uses節にユニット名を書きますが、利用する側から見ればユニットをそのプログラムで宣言した(そのプログラムに含まれている)のと同じように扱えます。一般的なユニットの構造を示します。

unit <識別子>
interface
uses <ユニット名のリスト>;
ここに定数、データ型、変数、手続きなどを宣言する(外部に対してパブリックなもの)
implementation
uses <ユニット名のリスト>;
ここに定数、データ型、変数、手続きなどを宣言する(外部に対してプライベートなもの)
手続きや関数の本体
begin
  初期化コード
end;
end. 
// 最後のピリオドに注目

上の構造で必要ない節や宣言は省略できます。しばしば、初期化コードは省略されますし、単純なユニットでは実現部には、手続きや関数の本体だけしか書かれていないものが多くあります。宣言部には、たいていデータ型としてクラスが宣言されます。

 

-

宣言

宣言は、interface部とimplementation部の2個所に分けて行います。interface部の宣言は外部に対するインターフェースの宣言なので、外部に対して公開されます。(こちろんクラスのprivateやprotectedメンバは公開されませんが)

これに対して、implementation部の宣言は外部には公開されないので、他のユニットから参照できません。クラスのメソッド本体は、外部仕様(インターフェース)だけを公開し、その中身を公開する必要がないのでimplementation部に記述します。

 

-

標準ユニット

Delphiが備えるルーチンやコンポーネントを使うときには、uses節にユニット名を追加する必要があります。コンポーネントをフォームに貼り付けたときは、自動的に必要なユニットが追加されますが、プログラムでCreateコンストラクタを使ってコンポーネントを初期化するときなどは、uses節に手動で必要なユニットを追加しなければなりません。