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 | これは、メソッドを実装するサブプログラムの名前です。 サブプログラムの名前は最大 8 文字です。 デフォルトは method-name です(IS 節が指定されない場合)。
|
END-METHOD | METHOD ステートメントを終了するには、Natural の予約語 END-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