クラスへのメソッドの追加
ここでは、クラス定義にメソッド定義を追加する方法、および編集する方法を説明します。
新規のメソッドをクラス定義に追加するには、以下の 2 つの方法があります。
-
クラス・エディタを使用してクラス定義にメソッドを追加する方法
-
新規メソッド・ウィザードを使用する方法
クラス・エディタを使用してメソッドを追加するには、クラス・エディタの空の行にカーソルを置き、次のようにメソッド宣言を入力します。
Class MyApp.Person Extends %Persistent
{
Method NewMethod() As %String
{
Quit ""
}
}
また、既存のメソッド宣言をコピーして貼り付け、それを編集することもできます。
メソッドの定義の詳細は、"メソッドの定義と呼び出し" を参照してください。"クラス定義リファレンス" の "メソッド定義" も参照してください。
新規メソッド・ウィザード
[クラス]→[追加]→[メソッド] を選択して、新規メソッド・ウィザードを起動できます。または、クラス・インスペクタで右クリックして、[追加]→[新規メソッド] を選択します。ツールバーの [新規メソッド] ボタン をクリックすることもできます。
新規メソッド・ウィザードでは、情報の入力が促されます。[完了] ボタンはいつでもクリンクできます。指定していない情報に対しては既定値が設定されます。
名前および説明ページ
新規メソッド・ウィザードでは、以下の情報の入力が促されます (これらの値は後で変更できます)。
(必須) 新規メソッドの名前。これは、有効なメソッド名である必要があります。また、定義済みの既存のメソッドと同じ名前を付けることはできません。
"識別子のルールとガイドライン" を参照してください。
(オプション) 新規メソッドに関する説明。この説明は、クラス・ドキュメントがオンライン・クラス・ライブラリ・ドキュメントで表示されるときに使用されます。
説明には、HTML フォーマット・タグを記述することもできます。"クラスの定義と使用" の "クラス・ドキュメントの作成" を参照してください。
メソッド・シグニチャ・ページ
すべてのメソッドは、返りタイプ (存在する場合) や、その引数リスト (存在する場合) を示すシグニチャを持っています。メソッドのシグニチャには、以下を指定できます。
(オプション) これは、メソッドから返される値のタイプを示します。このタイプは、InterSystems IRIS® クラスの名前です。クラス名は直接入力するか、[参照] ボタンを使用して、利用できるクラスのリストから選択することもできます。
例えば、True (1)、またはFalse (0) を返すメソッドの返りタイプは、%BooleanOpens in a new tab です。新規に作成するメソッドの返りタイプを指定しない場合は、このフィールドを空欄にしておきます。
(オプション) メソッドの仮引数の名前、型、既定値、およびデータを渡す方法 (参照渡し、または値渡し) を示します。引数は、表形式で表示されます。テーブルにある [追加] ボタン をクリックして、引数リストに新規の項目を追加することができます。このボタンをクリックすると、ポップアップ・ダイアログが表示され、引数の名前、その型、オプションの既定値、および値渡しか参照渡しかを指定できます。その下にあるボタンを使用すると、リスト内の項目の順序を並べ替えたり、項目を削除したりできます。
メソッド特性ページ
メソッドには、属性を追加して指定できます。これには、以下のものがあります。
(オプション) このメソッドがパブリックであるか、プライベートであるかを示します。プライベート・メソッドは、同じクラスの他のメソッドからのみ呼び出すことができます。
(オプション) このメソッドが最終であるかどうかを示します。最終メソッドは、サブクラスでオーバーライドすることはできません。
(オプション) 新規のメソッドが (インスタンス・メソッドではなく) クラス・メソッドであることを示します。クラス・メソッドは、オブジェクト・インスタンスなしで実行できます。
(オプション) このメソッドをストアドプロシージャとして ODBC クライアント、または JDBC クライアントからアクセスできることを示します。SQL ストアド・プロシージャとして呼び出せるのはクラス・メソッドのみです。
実装ページ
必要に応じて、クラス・エディタにソース・コード行を入力して、新規のメソッドに実装 (コード) を入力できます。ウィザードを実行した後、このソース・コードを入力することもできます。
新規メソッド・ウィザード実行の結果
新規メソッド・ウィザードの実行後、クラス・エディタが更新され、新規のメソッド定義が表示されます。このメソッド定義は、クラス・エディタとクラス・インスペクタのどちらを使用しても編集できます。以下に例を示します。
/// This is a Person class
class MyApp.Person extends %Persistent
{
Method Print() As %Boolean
{
Write "Hello"
Quit 1
}
}
メソッドのオーバーライド
[リファクタ] サブメニューは、スタジオが Windows サーバに接続されている場合にのみ利用できます。[オーバーライド] メニューは、他のプラットフォームで使用できます。
オブジェクト・ベース開発の優れた特徴の 1 つは、クラスがそのスーパークラスからメソッドを継承できる点にあります。また、スーパークラスから継承されたメソッドをオーバーライドする (つまり、新しい実装を作成する) こともできます。
[クラス]→[リファクタ]→[オーバーライド] を選択すると、現在のクラスでオーバーライド可能なスーパークラスで定義されているすべてのメソッドが一覧表示されるため、クラス・メソッドが簡単にオーバーライドされます。
例えば、永続クラスにおいて、クラスのインスタンスが保存されるときのカスタム検証を指定する場合、%RegisteredObjectOpens in a new tab クラスの %OnValidateObject メソッドの既定の実装をオーバーライドすることがあります。
以下の手順を実行します。
-
スタジオで、永続クラス定義をオープン (または生成) します。
-
[クラス]→[リファクタ]→[オーバーライド] を選択し、[メソッド] タブを選択します。ダイアログ・ウィンドウが開き、オーバーライドするメソッドのリストが表示されます。
-
リストから [%OnValidateObject] を選択し、[OK] ボタンを選択します。
クラス定義には、次のような %OnValidateObject メソッドの定義が追加されます。
class MyApp.Person extends %Persistent
{
// ...
Method %OnValidateObject() As %Status
{
}
}
これで、クラス・エディタを使用して、メソッドの本文にコードを追加することができます。