Main Content

ハンドル スーパークラス

ハンドル クラスをベースとする構築

handle クラスは抽象クラスです。したがって、このクラスのオブジェクトを直接作成することはできません。ハンドルの動作を継承するサブクラスを実装するには、handle クラスをスーパークラスとして使用します。MATLAB® は、handle クラスから派生する複数のクラスを定義します。これらのクラスは、それぞれのサブクラスに特化した機能を提供します。

特化されたハンドル基底クラス

ハンドルの動作と特定の機能の両方をクラスに追加するには、次の handle クラスからクラスを派生させます。

  • matlab.mixin.SetGet — プロパティ値にアクセスする setget メソッドを提供します。

  • dynamicprops — オブジェクトに関連付けられてはいるものの、一般的なクラスではないプロパティの定義を可能にします。

  • matlab.mixin.Copyable — ユーザー クラス用にカスタマイズできる copy メソッドを提供します。

サブクラスの定義方法の詳細については、サブクラス コンストラクターの設計を参照してください。

ハンドル クラスのメソッド

handle クラスからクラスを派生させると、そのサブクラスは、ハンドル オブジェクトをより効果的に操作できるメソッドを継承します。

関数 methods にクラス名を渡すことによって、クラスのメソッドを一覧表示します。

methods('handle')
Methods for class handle:

addlistener  findobj      gt           lt           
delete       findprop     isvalid      ne           
eq           ge           le           notify  

イベント メソッドとリスナー メソッド

notify および addlistener メソッドの実装方法についての詳細は、イベントとリスナーの構文を参照してください。

比較演算のメソッド

TF = eq(H1,H2)
TF = ne(H1,H2)
TF = lt(H1,H2)
TF = le(H1,H2)
TF = gt(H1,H2)
TF = ge(H1,H2)

ハンドル クラスはこれらの関数をオーバーロードして、等価性テストとハンドルの並べ替えをサポートします。入力配列の各ペアに対して、これらの関数は、同じサイズの logical 配列を出力します。各要素は、要素ごとの等価性または比較テスト結果です。入力配列どうしは、同じサイズでなければなりません。入力配列の 1 つ (または両方とも) がスカラーになることができます。このメソッドは、必要に応じてスカラー拡張を行います。ハンドル クラスの比較演算のメソッドの詳細については、relationaloperators を参照してください。

ハンドルの有効性のテスト

変数が有効なハンドル オブジェクトであるかどうかを判定するには、isvalid handle クラス メソッドを使用します。たとえば、ステートメントでは次になります。

B = isvalid(H)

BH の対応する要素が有効なハンドルである場合に限り、各要素が true となる logical 配列です。B は常に H と同じサイズです。

MATLAB がオブジェクトを破棄する場合

MATLAB は、関数が以下の操作を実行する場合に、関数のワークスペース内のオブジェクトを破棄します。

  • オブジェクト変数を新しい値に再び割り当てる

  • 関数の残りの部分でオブジェクト変数を使用しない

  • 関数の実行を終了する

MATLAB がオブジェクトを破棄するときには、オブジェクトのプロパティに保存された値も破棄されます。MATLAB は MATLAB またはオペレーティング システムでの使用のためにオブジェクトに関連付けられたコンピューターのメモリを解放します。

ハンドル クラスでメモリを解放する必要はありません。ただし、オブジェクトを破棄するときに実行する別の操作がある場合もあります。たとえば、ファイルを閉じたり、オブジェクト コンストラクターが起動した外部プログラムを終了したりする操作です。このような目的で、ハンドル サブクラスに delete メソッドを定義します。

詳細は、ハンドル クラスのデストラクターを参照してください。

関連するトピック