Programming with MATLAB | ![]() ![]() |
クラスコンストラクタメソッド
特別なクラスに対する@ディレクトリは、そのクラスに対するコンストラクタとするM-ファイルを含んでいます。コンストラクタの名前は、クラスの名前を定義するディレクトリ(接頭記号@や.m
の拡張子を除いて)の名前と同じです。コンストラクタは、データ構造を初期化したり、クラスオブジェクトを割り当ててオブジェクトを作成します。
コンストラクタを記述するためのガイドライン
クラスコンストラクタは、MATLAB環境の中で、オブジェクトが正しく機能するような関数です。一般的に、クラスコンストラクタは、入力引数の可能な3つの組み合わせを取り扱います。
入力引数なし 入力引数がない場合、コンストラクタはデフォルトのオブジェクトを作成します。入力がないために、オブジェクトを作成するためのデータがありません。それで、オブジェクトのデータ構造体を空、または、デフォルト値で、単に初期化し、オブジェクトを示す
class
関数を呼び込み、出力引数として、オブジェクトを戻します。この構文に対するサポートは、つぎの2つの理由から必要になります。
load
関数は、引数なしでクラスコンストラクタを呼びます。オブジェクト入力引数 引数内の最初の入力引数が同じクラスのオブジェクトの場合、コンストラクタは、
単にオブジェクトを戻します。isa
関数を使って、引数がクラスのメンバか否かを決定します。このコンストラクタ構文を使ったメソッドの例題は、"+演算子の多重定義"を参照してください。
データ入力引数 入力引数が存在し、同じクラスのオブジェクトでない場合、コンストラクタは、
入力データを使って、オブジェクトを作成します。もちろん、任意の関数内と同
じく、ユーザのコンストラクタ関数内でチェックされた適切な引数になります。
一般的なアプローチは、 varargin
入力引数を使い、プログラムフローをコントロールするためswitch
ステートメントを使います。これは、3つの場合、すなわち、入力なし、オブジェクト入力、オブジェクトを作成するために使われるデータ入力をまとめた簡単な方法です。
オブジェクトのデータ構造体に値を割り当て、関数class
を呼んでオブジェクトと(instantiate)し、出力引数としてオブジェクトを戻すことが、コンストラクタのこの部分にあります。必要ならば、関数superiorto
とinferiorto
を使って、オブジェクト階層構造内に、オブジェクトを配置します。
コンストラクタの中でclass関数を使用
コンストラクタメソッドの中で、オブジェクト構造体を特別なクラスに関連付けるために関数class
を使います。これは、関数class
とisa
を使ってしかアクセスできない内部クラスタグを使って行います。たとえば、この関数class
を呼び出しは、タイプpolynom
の中のオブジェクトp
を識別します。
p = class(p,'polynom');
コンストラクタメソッドの例題
コンストラクタメソッドの例題は、つぎの節を参照してください。
![]() |
MATLAB内でのユーザのクラス設計 | クラスディレクトリ外の認識 | ![]() |