Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

クラスへのメソッドの追加

この章では、クラス定義にメソッド定義を追加する方法、および編集する方法を説明します。

オブジェクトに関連し、オブジェクトによって実行されるオペレーションは、メソッドと呼ばれます。クラス定義には、複数のメソッドが含まれています (メソッドが含まれていないこともあります)。

新規のメソッドをクラス定義に追加するには、以下の 2 つの方法があります。

  • クラス・エディタを使用してクラス定義にメソッドを追加する方法

  • 新規メソッド・ウィザードを使用する方法

クラス・エディタを使用してメソッドを追加するには、クラス・エディタの空の行にカーソルを置き、メソッド宣言を入力します。

Class MyApp.Person Extends %Persistent 
{
Method NewMethod() As %String
{
    Quit ""
}
}

また、既存のメソッド宣言をコピーして貼り付け、それを編集することもできます。

メソッド定義の詳細は、"Caché クラス定義リファレンス" のリファレンス “クラス定義” にある “クラス定義” を参照してください。

新規メソッド・ウィザード

[クラス]→[追加]→[メソッド] を使用して、新規メソッド・ウィザードを起動します。または、クラス・インスペクタで右クリックして [新規メソッド] を選択するか、ツールバーから [新規メソッド] アイコン generated description: newmethodicon を選択することもできます。

新規メソッド・ウィザードでは、情報の入力が促されます。[完了] ボタンはいつでも選択できます。指定していない情報に対しては既定値が設定されます。

名前および説明ページ

新規メソッド・ウィザードでは、以下の情報の入力が促されます (これらの値は後で変更できます)。

メソッド名

(必須) 新規メソッドの名前。これは、有効なメソッド名である必要があります。また、定義済みの既存のメソッドと同じ名前を付けることはできません。

名前の概要は、“Caché オブジェクトの使用法” の “Caché クラス” の章を参照してください。

説明

(オプション) 新規メソッドに関する説明。この説明は、クラス・ドキュメントがオンライン・クラス・ライブラリ・ドキュメントで表示されるときに使用されます。

説明には、HTML フォーマット・タグを記述することもできます。詳細は、"Caché オブジェクトの使用法" の “クラスの定義とコンパイル” の章の “クラス・ドキュメントでの HTML マークアップの使用” を参照してください。

メソッド・シグニチャ・ページ

すべてのメソッドは、返りタイプ (存在する場合) や、その引数リスト (存在する場合) を示すシグニチャを持っています。メソッドのシグニチャには、以下を指定できます。

返りタイプ

(オプション) これは、メソッドから返される値のタイプを示します。このタイプは、Caché クラスの名前です。クラス名は直接入力するか、[参照] ボタンを使用して、利用できるクラスのリストから選択することもできます。

例えば、True (1)、またはFalse (0) を返すメソッドの返りタイプは、%BooleanOpens in a new tab です。新規に作成するメソッドの返りタイプを指定しない場合は、このフィールドを空欄にしておきます。

Caché で用意されている基本的なデータ型クラスの詳細は、"Caché オブジェクトの使用法" の "データ型" の章を参照してください。

引数

(オプション) 仮引数の名前、型、既定値、およびデータを渡す方法 (参照渡し、または値渡し) を示します。引数は、表形式で表示されます。表にある [追加] ボタンを使用して、引数リストに新規の項目を追加できます。このボタンをクリックすると、ポップアップ・ダイアログが表示され、引数の名前、その型、オプションの既定値、および値渡しか参照渡しかを指定できます。その下にあるボタンを使用すると、リスト内の項目の順序を並べ替えたり、項目を削除したりできます。

メソッド特性ページ

メソッドには、属性を追加して指定できます。これには、以下のものがあります。

プライベート

(オプション) このメソッドがパブリックであるか、プライベートであるかを示します。プライベート・メソッドは、同じクラスの他のメソッドによってのみ呼び出されます。

最終

(オプション) このメソッドが最終であるかどうかを示します。最終メソッドは、サブクラスでオーバーライドすることはできません。

Class Method (クラス・メソッド)

(オプション) 新規のメソッドが (インスタンス・メソッドではなく) クラス・メソッドであることを示します。クラス・メソッドは、オブジェクト・インスタンスなしで実行できます。

SQL ストアド・プロシージャ

(オプション) このメソッドをストアドプロシージャとして ODBC クライアント、または JDBC クライアントからアクセスできることを示します。SQL ストアド・プロシージャとして呼び出せるのはクラス・メソッドのみです。

言語

メソッドの作成に使用する言語を指定します。

実装ページ

必要に応じて、テキスト・エディタ・ウィンドウ内にソース・コード行を入力して、新規のメソッドに実装 (コード) を入力できます。ウィザードを実行した後でも、クラス・エディタを使用してソース・コードを入力することもできます。

新規メソッド・ウィザード実行の結果

新規メソッド・ウィザードの実行後、クラス・エディタ・ウィンドウが更新され、新規のメソッド定義が表示されます。このメソッド定義は、クラス・エディタとクラス・インスペクタのどちらを使用しても編集できます。以下に例を示します。

/// This is a Person class
class MyApp.Person extends %Persistent
{
Method Print() As %Boolean
{
    Write "Hello"
    Quit 1
}
}

メソッドのオーバーライド

Note:

[リファクタ] サブメニューは、スタジオが Windows サーバに接続されている場合にのみ利用できます。[オーバーライド] メニューは、他のプラットフォームで使用できます。

オブジェクト・ベース開発の優れた特徴の 1 つは、クラスがそのスーパークラスからメソッドを継承できる点にあります。また、スーパークラスから継承されたメソッドをオーバーライドする (つまり、新しい実装を作成する) こともできます。

[クラス]→[リファクタ]→[オーバーライド] を選択すると、現在のクラスでオーバーライド可能なメソッドとしてスーパークラスで定義されているすべてのメソッドが表示されるため、特定のメソッドなどのクラス項目を簡単にオーバーライドすることができます。

例えば、永続クラスにおいて、クラスのインスタンスが保存されるときのカスタム検証を指定する場合、%RegisteredObjectOpens in a new tab クラスの %OnValidateObject メソッドの既定の実装をオーバーライドすることがあります。

以下の手順を実行します。

  1. スタジオで、永続クラス定義をオープン (または生成) します。

  2. [クラス]→[リファクタ]→[オーバーライド] を選択し、[メソッド] タブを選択します。ダイアログ・ウィンドウが開き、オーバーライドするメソッドのリストが表示されます。

  3. リストから [%OnValidateObject] を選択し、[OK] ボタンを選択します。

クラス定義には、次のような %OnValidateObject メソッドの定義が追加されます。

class MyApp.Person extends %Persistent 
{
// ...
Method %OnValidateObject() As %Status
{
}
}

これで、クラス・エディタを使用して、メソッドの本文にコードを追加することができます。

FeedbackOpens in a new tab