読み込み時のオブジェクトの初期化
オブジェクト読み込み時のコンストラクターの呼び出し
MAT ファイルからオブジェクトを読み込むときに、MATLAB はクラス コンストラクターを呼び出しません。ただし、ConstructOnLoad
クラス属性を true
に設定すると、load
はコンストラクターを引数なしで呼び出します。
loadobj
メソッドを実装したくないが、構築時に何らかのアクションを実行する必要がある場合に ConstructOnLoad
を有効にします。たとえば、別のオブジェクトに対しリスナーを登録するときに ConstructOnLoad
を有効にします。エラーを発生させずに、MATLAB® が引数なしでクラス コンストラクターを呼び出せるようにしてください。
スーパークラスに設定されている属性は、サブクラスによって継承されません。そのため、MATLAB は、オブジェクトを読み込む際にスーパークラスの ConstructOnLoad
属性の値を使用しません。MATLAB でクラス コンストラクターを呼び出す場合は、特定のサブクラスに ConstructOnLoad
属性を設定します。
コンストラクターが入力引数を必要とする場合は loadobj
メソッドを使用します。
loadobj
メソッドでのオブジェクトの初期化
オブジェクトの初期化を行うためにクラス コンストラクターが入力引数を必要とする場合は、loadobj
メソッドを使用します。
LabResults
クラスは、コンストラクター オブジェクトの初期化手順を assignStatus
メソッド内で実行することにより、これらの手順を loadobj
メソッドと共有します。
LabResults
クラスのオブジェクトは次のことを行います。
テスト結果の値を保持する。
一連の条件に基づいて各値に状態を割り当てる。
classdef LabResult properties CurrentValue end properties (Transient) Status end methods function obj = LabResult(cv) obj.CurrentValue = cv; obj = assignStatus(obj); end function obj = assignStatus(obj) v = obj.CurrentValue; if v < 10 obj.Status = 'Too low'; elseif v >= 10 && v < 100 obj.Status = 'In range'; else obj.Status = 'Too high'; end end end methods (Static) function obj = loadobj(s) if isstruct(s) cv = s.CurrentValue; obj = LabResults(cv); else obj = assignStatus(s); end end end end
LabResults
クラスは、loadobj
を使用して指定されたテスト値の状態を判断します。この方法により、次のことを行う手段が手に入ります。
状態を判断するための条件を変更する
オブジェクトで常に現在の条件が使用されるようにする
saveobj
メソッドを実装する必要はありません。