Home About Rice Downloads Documents Others Cooker CookerGX
Documents  >  Tutorial  >  basicelements
Riceプログラムを構成する基本要素

この章の目的。

Riceプログラムを構成する基本要素である、コメント、import命令、クラス定義について学びます。

Riceプログラムを構成する基本要素。

それでは、Sample.cookの中を見てみましょう。


Sample.cookは、三つの大きな要素で構成されています。すなわち、コメント、import命令、クラス定義です。


1~6行目が、コメント。

7行目が、import命令。

8行目以降が、クラスの定義。


Riceプログラムは、この三つの要素を繰り返して作られます。

更に言えば、コメントは実行時に無視されます。import命令は、実行の前に外部ファイルを読み込みます。読み込んだファイルにimport命令が有れば、更にそのファイルを読み込みます。

その結果、プログラムの実行時には、クラス定義だけが残ります。


つまり、Riceプログラムは、クラス定義の集合です。

クラス定義の外部に存在できるのは、コメントとimport命令だけであることに注意してください。両者は、プログラムの実行時に直接の影響を持ちません。

グローバル変数のような、プログラムの実行時に直接の影響を持つクラス定義外部の要素は、Rice言語には存在しません。

コメント。

コメントはソースコードに挿入された注釈です。プログラムの実行時には無視されます。

コメントは、Riceソースコードの任意の場所で使用できます。つまり、クラス定義の外部でも、内部でも使用できます。


Riceには、二種類のコメントがあります。

複数行コメント

単一行コメント

複数行コメント

1:

/*--------------------------------------------------------------------

2:

Sample.cook

3:

The entry point of this sample program.

4:

The main class has a responsibility to create the user interface and to allocate the event handler.

5:

----------------------------------------------------------------------*/

上記のコードは、複数行のコメントの例です。Sample.cookの1行目から5行目にあります。

上記の例のように、ライスプログラムで複数行のコメントは/*で始まり、*/で終了します。

単一行コメント

1:

// Import Circle class.

2:

import "@\Circle.88" // Circle.88 file is in a same directory that contains Sample.cook.

上記のコードは、単一行のコメントの例です。Sample.cookの6行目から7行目にあります。

上記の例のように、ライスプログラムで単一行コメントは//で始まり、行の終わりで終了します。

import命令

import命令は、ソースファイルを分割して記述するための機能です。

import命令は、import命令の位置に指定されたソースファイルを展開します。展開したソースファイルにimport命令があれば、同じ処理を繰り返します。

キーワード"import"に続く文字列で、展開したいファイルのパスを指定します。

import命令は、クラス定義の外部で自由に使用できます。import命令の位置に制限はありません。


import命令のパスの指定方法は三つあります。

絶対パス指定。

相対パス指定。

拡張相対パス指定。


1:

import "@\Circle.88" // Circle.88 file is in a same directory that contains Sample.cook.

上記のコードは、import命令の例です。Sample.cookの7行目にあります。

上記の例は、拡張相対パス指定によりCircle.88を展開します。コメントされているように、Circle.88はSample.cookと同じディレクトリにあります。

絶対パス指定。

絶対パス指定は、ファイルシステムの最上位階層からパスを指定する方法です。

Windowsのファイルシステムでは、最上位階層はドライブ名なので、以下のようになります。


"C:\Users\YourName\Documents\Rice\souce\Circle.88"


絶対パス指定は、Windowsで標準的に使われるパスの指定法です。詳細の説明は省略します。

相対パス指定。

相対パス指定は、カレントディレクトリを基準としてパスを記述する方法です。

Windowsのファイルシステムでは、ドットが相対パス指定のための記号なので、以下のようになります。


".\Circle.88"

"..\source\Circle.88"


相対パス指定は、Windowsで標準的に使われるパスの指定法です。詳細の説明は省略します。

import命令で相対パス指定を使用する場合、いくつかの状況では、問題が発生することがあります。


Cooker.exeが、ディレクトリAにあり、Sample.cookが、Aとは別のディレクトリBにあると仮定します。

Cookerを起動して、CookerからSample.cookを選択して実行した場合、カレントディレクトリはAになります。

Cookerと.cookファイルが関連付けされているならば、Sample.cookをダブルクリックすることで、実行することが出来ます。このように実行した場合は、カレントディレクトリはBになります。


相対パス指定が、このような状況で使用されている場合、Riceはファイルを見つけることができない場合があるでしょう。

拡張相対パス指定。

拡張相対パス指定は、import命令が記述されているソースファイルを基準としてパスを記述する方法です。

拡張相対パス指定では、@が拡張相対パス指定のための記号なので、以下のようになります。


"@\Circle.88"

"@@\source\Circle.88"


単一の@は、import命令が記述されているソースファイルが置かれているディレクトリを表します。

二重の@は、import命令が記述されているソースファイルが置かれているディレクトリの親ディレクトリを表します。

二重の@は、繰り返すことが出来ます。例えば、"@@\@@\..."は、親ディレクトリの親ディレクトリを表します。


つまり、拡張相対パス指定の@の使用方法は、相対パス指定のドットと同じです。パスの基準となる位置が違うだけです。

拡張相対パス指定を使うことで実行状況によるカレントディレクトリの差異を回避できます。

注意してください。クラス定義内で拡張相対パス指定を使うことは出来ません。これは、import命令のための特別な表記法です。

クラス定義。

クラス定義は、キーワードclassとキーワードendclassの間に記述されたメンバ定義の集合です。それは、クラスのインスタンスの状態と振舞を決定します。

クラス定義の形式。

クラス定義は、以下の形式です。


class クラス名

メンバ定義

endclass


キーワードclassで始まり、次にクラス名を指定します。そして、メンバ定義の後に、キーワードendclassで終了します。

いくつかの言語では、publicやprivateなどの、クラスのアクセスレベルを制御するキーワードをクラス定義に付与できます。


それに対して、Riceのクラス定義は、アクセスレベルを指定できません。

Riceのクラスは、常に公開されます。つまり、定義されたクラスは、任意の場所で使用することが出来ます。

常に公開なので、アクセスレベルを指定することは無意味です。したがって、クラス定義にアクセスレベルの指定はありません。

キーワードclass。

クラス定義は、キーワードclassから始まります。

"class"はキーワードなので、識別子として使用できません。

クラス名。

クラス名は、Riceがメモリ上に作成したインスタンスのクラスを識別するため名前であり、キーワードclassの後に必須です。

同じクラス名をもつクラスを再定義することはできません。

クラス名の命名規則は、識別子と同じです。

メンバ定義。

メンバ定義については、次章で説明します。

キーワードendclass。

クラス定義は、キーワードendclassで終わります。

"endclass"はキーワードなので、識別子として使用できません。

Copyright © Rice All rights reserved.