Home About Rice Downloads Documents Others Cooker CookerGX
Documents  >  Tutorial  >  methods
メソッド

この章の目的。

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

メソッド

メソッドは、関数呼び出しの形式を用いた、クラスのインターフェースです。主な目的は、クラスの振舞を指定することです。

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

1:

// -----------------------------------------------Methods.

2:

// It draws a circle.

3:

open method void Draw()

4:

_box.Style.Clear(); // It clears the position.

5:

_doc.InvokeJS("drawCircle", _x, _y, _radius); // invokes javascript. It draws a circle to the canvas element.

6:

endmethod

7:
8:

// It removes a circle.

9:

open method void Clear()

10:

_doc.InvokeJS("clearCircle"); // invokes javascript. It removes a circle from the canvas element.

11:

endmethod

12:
13:

// It does not redraw a circle. It will move _box element.

14:

open method void Move()

15:

_top = _y - _radius;

16:

_left = _x - _radius;

17:
18:

_tt.Start();

19:

endmethod

20:
21:

// This method is handler that is invoked from the timer.

22:

// It does not redraw a circle. It will move _box element.

23:

open method void timerHandler(timer tt)

24:

//If the circle reaches boundary, moving direction will change.

25:

if(_top<= 0 | (_top + _radius * 2) >= 600) //600 is height of display area.

26:

_ver = _ver * -1;

27:

endif

28:

if(_left<= 0 | (_left + _radius * 2) >= 600) //600 is width of display area.

29:

_hor = _hor * -1;

30:

endif

31:
32:

// The top-left corner.

33:

_top = _top + _ver;

34:

_left = _left + _hor;

35:
36:

// The center.

37:

_x = _left + _radius;

38:

_y = _top + _radius;

39:
40:

// Shows the coordinate of the center.

41:

_doc.InvokeJS("setInputValue", "center_x", _x);

42:

_doc.InvokeJS("setInputValue", "center_y", _y);

43:
44:

// moves position.

45:

_box.Style.SetRuntimeAttribute("top", _top.ToString() + "px");

46:

_box.Style.SetRuntimeAttribute("left", _left.ToString() + "px");

47:

endmethod

48:
49:

// It stops moving.

50:

open method void Stop()

51:

_tt.Stop();

52:

endmethod

メソッド定義は、以下の形式をしています。


アクセス制御(open か closed) method 返り値型 メソッド名 ( 引数... )

メソッド定義の文...

endmethod


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

アクセス制御

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

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

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

キーワード method

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

返り値型

キーワードmethodの次に返り値型を指定します。これは、メソッドが返すインスタンスのクラス名を示しています。

メソッドが、値を返さない場合は、void を指定してください。

メソッド名

返り値型の次にメソッド名を指定します。メソッド名の命名規則は、識別子と同じです。

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

例えば、


open method int Sample(int value)

return Value;

endmethod

open method long Sample(long value)

return Value;

endmethod


メソッド名が同じでも、引数が異なれば適切なメソッドが呼び出されます。

引数

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

引数は、クラス名(引数の型)と引数名の組です。

二つ以上の引数があるときは、引数ををカンマで区切って指定します。引数が一つのときは、カンマは必要ありません。引数が無いときは、括弧の中は空です。

Riceは、引数の型の並び順で同じ名前のメソッドを区別します。引数の並び順が異なる同じ名前のメソッドをいくつでも定義できます。

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

例えば、

open method int A() -> "A()"

open method int A(int value) -> "A(int)"

closed method int A(int iVal, string sVal) -> "A(int,string)"


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

キーワード endmethod

メソッド定義の終了を示すキーワードです。

Copyright © Rice All rights reserved.