Home News DOC Class DL Others Cooker
Documents  >  Tutorial  >  entry ポイント
entry ポイント

プログラム言語には実行の開始場所が規定されています。これを entry ポイントといいます。

プログラムを記述する上で entry ポイントを理解しておくことは重要です。それは実行手順の理解に他ならないからです。


実行の開始点である entry ポイント、実行の終了点である exit ポイント、更に、それらを含むユーザー定義クラスである main クラス、これらはスクリプトの実際の動作において重要な要素です。


目次:


entry ポイント

exit ポイント

main クラス

entry ポイント

entry ポイントの形式は様々です。例えば、C言語では main という名前の関数が entry ポイントになります。BASICなどはソースコードの先頭から実行していくのでファイルの先頭が entry ポイントとなります。

Rice言語の entry ポイントはアプリケーションにより異なります。main クラスの open メソッドは全て entry ポイントになり得ます。

"main クラス"や"open メソッド"といった言語の構成要素については後述します。

Rice言語の entry ポイントについて Cooker を例にして説明していきます。

プログラムの実行を指示された Cooker はソースファイルを読み込み仮想機械を生成します。そして、仮想機械が main クラスの start() メソッドを呼び出します。

この、start() メソッドの呼び出しが Cooker における entry ポイントです。


Cooker において main クラスおよび start() メソッドの定義は必須です。それらが定義されていない場合はスクリプトを実行できません。

1:

class main

2:

open method void start()

3:

endmethod

4:

endclass

上記は Cooker における main クラスの定義の例です。start() メソッドにコードを追加していけば Cooker で実行できる Rice スクリプトが作成できます。


Cooker において start() メソッドが entry ポイントになるのは Cooker が、そのように実装されているからです。

前述したように main クラスの open メソッドは全て entry ポイントになり得ます。どのメソッドを entry ポイントにするかはアプリケーションの実装に依存します。

exit ポイント

プログラム実行の開始点が entry ポイントと呼ばれるのに対して終了点を exit ポイントと呼びます。アプリケーションによっては exit ポイントが重要な場合があります。

entry ポイントと同様に main クラスの open メソッドは全て exit ポイントになり得ます。どのメソッドを exit ポイントにするかはアプリケーションの実装に依存します。


exit ポイントについて Cooker を例にして説明していきます。

Cooker のプログラム実行の終了点はスクリプトの切り替わり時とアプリケーションの終了時です。

Cooker はスクリプトを切り替えて実行することができます。一時に実行されているスクリプトは一つですので新しいスクリプトファイルを実行する際には、それ以前に実行されていたスクリプトの後処理が必要になるかもしれません。

Cooker の終了時も同様です。アプリケーションを終了する前に実行されているスクリプトの後処理が必要になるかもしれません。


スクリプトの後処理が必要かどうかはスクリプトの内容に依存するので、アプリケーションが、それを判断することはできません。

Cooker は後処理が必要かどうか判断する代わりに exit ポイントで main クラスの end() メソッドの呼び出しを試みます。end() メソッドが存在するならば呼び出します。存在しないなら何もしません。


つまり、end() メソッドの定義はオプションです。後処理が必要な時にだけ end() メソッドを定義します。

1:

class main

2:

open method void start()

3:

endmethod

4:

open method void end()

5:

endmethod

6:

endclass

main クラスの定義に end() メソッドを追加しました。この end() メソッドにコードを加えれば exit ポイントでのスクリプトの振る舞いを定義できます。


Cooker において end() メソッドが exit ポイントになるのは Cooker が、そのように実装されているからです。

main クラスの open メソッドは全て exit ポイントになり得ます。どのメソッドを exit ポイントにするかはアプリケーションの実装に依存します。

main クラス

これまでに述べてきたように main クラスは start() や end() メソッドをメンバとして持つ重要なクラスです。Rice 言語は main クラスがアプリケーションとのインターフェースとして機能すること想定して実装されています。


これ以外にも main クラスには重要な特徴があります。それは、main クラスのインスタンスはシングルトンであるということです。


今、架空のユーザー定義クラス someclass が存在するとします。

1:

someclass newInstance = new someclass();

このような文を定義文といいます。この場合は変数 newInstance を定義しています。

この文が実行されると、変数 newInstance と someclass クラスのデータがメモリ上に確保されます。メモリ上にある someclass クラスのデータのことをインスタンスと言います。

そして、newInstance のメモリ領域に someclass クラスのインスタンスのメモリアドレスが書き込まれます。


main クラス以外のユーザー定義クラスは生成される時に別々のインスタンスが割り当てられます。someclass クラスの定義文が十個あれば、十個のメモリ領域に個別のデータが割り当てられます。

これに対して main クラスは別々のメモリ領域が割り当てられることはありません。main クラスの定義文が十個あっても、全て同一インスタンスが割り当てられます。

このようなインスタンスをシングルトンインスタンスといいます。


main クラスがシングルトンインスタンスであることには様々な利点があります。

Copyright © Rice All rights reserved.