Programming with MATLAB | ![]() ![]() |
資産コンストラクタメソッド
資産クラスは、つぎの四つのフィールドをもつ構造体配列をベースにしています。
descriptor
- 特別な資産(たとえば、株式の名前、貯蓄勘定の番号等々)の識別子date
- オブジェクトが作成された日時(date
コマンドで計算可能)type
- 資産のタイプ (e.g., 貯蓄, bond, 株式)current_value
- 資産の現在の価値(サブクラスデータから計算可能)この情報は、資産子オブジェクト(株式、債券、貯蓄勘定)に共通で、各子クラ スの中に同じフィールドを定義することを避けるために、親オブジェクトから取 り扱われます。これは、子クラスの数が増えると共に便利なものになります。
function a = asset(varargin) % ASSET 資産オブジェクト用のコンストラクタ関数 % a = asset(descriptor, current_value) switch nargin case 0 % 入力引数がない場合、デフォルトオブジェクトを作成 a.descriptor = 'none'; a.date = date; a.type = `none'; a.current_value = 0; a = class(a,'asset'); case 1 % クラスassetの引数が単一の場合それを出力 if (isa(varargin{1},'asset')) a = varargin{1}; else error('Wrong argument type') end case 3 % 指定した値を使って、オブジェクトを作成 a.descriptor = varargin{1}; a.date = date; a.type = varargin{2}; a.current_value = varargin{3}; a = class(a,'asset'); otherwise error('Wrong number of input arguments') end
関数は、三つの可能なシナリオをまとめて、switch
ステートメントを使っています。
資産コンストラクタメソッドは、直接呼ばれることはありません。すなわち、その目的が共通のデータに対するストレージを与えることなので、子コンストラクタから呼ばれます。
![]() |
例題:資産と資産サブクラス | 資産getメソッド | ![]() |