METHOD method-name |
|
OF [INTERFACE] interface-name |
|
IS subprogram-name |
|
END-METHOD |
|
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連ステートメント:CREATE
OBJECT | DEFINE
CLASS | INTERFACE | PROPERTY | SEND METHOD
関連機能グループ:コンポーネントベースプログラミング
METHOD ステートメントは、実装としてサブプログラムをメソッドにインターフェイス定義外で割り当てます。問題のインターフェイス定義がコピーコードから取得され、クラス固有の方法で実装される場合は、これが使用されます。
METHOD ステートメントは、DEFINE CLASS ステートメント内でインターフェイス定義後にのみ使用できます。指定するインターフェイス名およびメソッド名は、DEFINE CLASS ステートメントの INTERFACE 節で定義されている必要があります。
| 構文要素 | 説明 |
|---|---|
method-name |
メソッド名:
これは、 |
OF
interface-name |
インターフェイス名:
これは、 |
IS
subprogram-name |
IS 節:
この節は、メソッドを実装するサブプログラムの名前を指定するために使用できます。サブプログラムの名前は最大 8 文字です。デフォルトは |
END-METHOD |
METHOD ステートメントの終了:
|
以下の例は、同じインターフェイスを 2 つのクラスに別々に実装する方法と、これを実現するために PROPERTY ステートメントと METHOD ステートメントを使用する方法を示しています。
インターフェイス Measure をコピーコード iface-c に定義します。クラス Elephant と Mouse はインターフェイス Measure を実装します。したがって、それらは両方ともコピーコード iface-c を組み込みます。しかし、クラスは、それらの個々のオブジェクトデータエリアから異なる変数を用いてプロパティ Height を実装し、異なるサブプログラムでメソッド Init を実装します。それらは PROPERTY ステートメントを使用して選択したデータエリア変数をプロパティに割り当てて、METHOD ステートメントで選択したサブプログラムをメソッドに割り当てます。
プログラム prog は両方のクラスのオブジェクトを作成し、個々のクラス実装への初期化の指定をそのままにして、同じメソッド Init を使用してそれらを初期化できるようになります。

次は上記の例で使用された Natural モジュールの完全な内容を示しています。
interface Measure * property Height(p5.2) end-property * property Weight(i4) end-property * method Init end-method * end-interface
define class elephant object using class1-o interface using iface-c * property Height of interface Measure is height end-property * property Weight of interface Measure is weight end-property * method Init of interface Measure is init1-n end-method * end-class end
* *** Top of Data Area *** 1 HEIGHT P 5.2 1 WEIGHT I 2 * *** End of Data Area ***
define data object using class1-o end-define * height := 17.3 weight := 120 * end
define class mouse object using class2-o interface using iface-c * property Height of interface Measure is size end-property * property Weight of interface Measure is weight end-property * method Init of interface Measure is init2-n end-method * end-class end
* *** Top of Data Area *** 1 SIZE P 3.2 1 WEIGHT I 1 * *** End of Data Area ***
define data object using class2-o end-define * size := 1.24 weight := 2 * end
define data local 1 #o handle of object 1 #height(p5.2) 1 #weight(i4) end-define * create object #o of class 'Elephant' send "Init" to #o #height := #o.Height #weight := #o.Weight write #height #weight * create object #o of class 'Mouse' send "Init" to #o #height := #o.Height #weight := #o.Weight write #height #weight * end