Home About Rice Downloads Documents Others Cooker CookerGX
Documents  >  Tutorial  >  setters
セッタ

この章の目的。

クラス定義を構成する基本要素である、セッタについて学びます。

セッタ

セッタは、変数への代入の形式を用いた、クラスのインターフェースです。主な目的は、フィールドへのアクセス機能を提供ことです。

セッタへの代入は、返り値を持たない単一引数のメソッドである、セッタの呼び出しに自動的に変換されます。

まず、Circle.88のセッタ定義部分を以下に示します。

1:

// -----------------------------------------------Getters and setters.

2:

open getter bool Fitted

3:

return _fitted.Clone(); // Encapsulation.

4:

endgetter

5:

open getter bool Moving

6:

if(_tt.Fitted)

7:

return _tt.IsEnabled;

8:

else

9:

return false;

10:

endif

11:

endgetter

12:
13:

// x-coordinate of the center.

14:

open getter int X

15:

return _x.Clone(); // Encapsulation.

16:

endgetter

17:

open setter X(int value)

18:

_x.Value = value; // Encapsulation.

19:

endsetter

20:

// y-coordinate of the center.

21:

open getter int Y

22:

return _y.Clone(); // Encapsulation.

23:

endgetter

24:

open setter Y(int value)

25:

_y.Value = value; // Encapsulation.

26:

endsetter

_currentCircle.X = x; // Sample.cookの77行目

セッタ名'X'への代入は、'open setter X(int value)' の呼び出しに変換されます。


セッタ定義は、以下の形式をしています。


アクセス制御(open か closed) setter セッタ名 ( 引数 )

セッタ定義の文...

endsetter


つまり、アクセス制御から始まり、キーワードsetterが続き、キーワードendsetterで終わる定義です。

アクセス制御

セッタのアクセスレベルを、キーワードopenかclosedを用いて指定します。

openを指定すると、そのセッタは、プログラムのどこでも使えます。

closedを指定すると、そのセッタは、クラス定義の内部でのみ使えます。

クラス定義の内部では、そのクラスの全てのインスタンスのclosedメンバにアクセス出来ます。

キーワード setter

この定義が、セッタの定義である事を示すキーワードです。アクセス制御の次に指定する必要があります。

セッタ名

キーワードsetterの次にセッタ名を指定します。セッタ名の命名規則は、識別子と同じです。

引数の異なる同じ名前のセッタを定義することが出来ます。

例えば、


open setter X(long value)

_x.Value = value.I; // Cast and encapsulation.

endsetter


セッタ名Xは既に存在していますが、上記の新しいセッタをCircle.88に加えても、プログラムは正常に動作します。

引数

セッタの引数を、セッタ名の次に括弧で囲んで指定します。

引数は、クラス名(引数の型)と引数名の組を一つ指定します。セッタには引数が必須です。引数の型が、セッタに代入できる値の型になります。

Riceは、引数の型でセッタを区別します。引数が異なる同じ名前のセッタを、いくつでも定義できます。

Riceは、セッタ名と引数から、セッタを呼び出すための名前を作成します。

例えば、

open setter X(int value) -> "X(int)"

open setter X(long value) -> "X(long)"


アクセス制御は、この名前の生成に関係しないことに注意してください。

キーワード endsetter

セッタ定義の終了を示すキーワードです。

Copyright © Rice All rights reserved.