Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

System object の保存と読み込み

この例では、System object™ を読み込む方法と保存する方法を示します。

System object と子オブジェクトの保存

System object を保存するときにパブリック プロパティ以外のものも保存するように指定するsaveObjectImplメソッドを定義します。このメソッド内で既定の設定のsaveObjectImpl@matlab.Systemを使用してパブリック プロパティを構造体sに保存します。子オブジェクトはsaveObjectメソッドを使用して保存します。保護されている依存プロパティを保存して、最後に、オブジェクトが呼び出された後に解放されていない場合は、オブジェクトの状態を保存します。

methods (Access = protected)functions = saveObjectImpl(obj) s = saveObjectImpl@matlab.System(obj); s.child = matlab.System.saveObject(obj.child); s.protectedprop = obj.protectedprop; s.pdependentprop = obj.pdependentprop;ifisLocked(obj) s.state = obj.state;endendend

System object と子オブジェクトの読み込み

以前に保存した System object を読み込むloadObjectImplメソッドを定義します。このメソッド内では、loadObjectを使用して子の System object を読み込み、保護されたプロパティとプライベート プロパティを読み込んで、オブジェクトが呼び出された後に解放されていない場合には、その状態を読み込みます。さらに、基底クラスからloadObjectImplを使用してパブリック プロパティを読み込みます。

methods (Access = protected)functionloadObjectImpl(obj,s,isInUse) obj.child = matlab.System.loadObject(s.child); obj.protectedprop = s.protectedprop; obj.pdependentprop = s.pdependentprop;ifisInUse obj.state = s.state;endloadObjectImpl@matlab.System(obj,s,isInUse);endend

保存と読み込みをもつ完全なクラス定義ファイル

Counterクラスの定義ファイルは Count プロパティをもつオブジェクトを設定します。このカウンターはMySaveLoaderクラス定義ファイルで使用し、子オブジェクト数をカウントします。

classdefCounter < matlab.Systemproperties(DiscreteState) Countendmethods(Access=protected)functionsetupImpl(obj, ~) obj.Count = 0;endfunctiony = stepImpl(obj, u)ifu > 0 obj.Count = obj.Count + 1;endy = obj.Count;endendend
classdefMySaveLoader< matlab.Systemproperties(Access = private) child pdependentprop = 1endproperties(Access = protected) protectedprop = rand;endproperties(DiscreteState = true) stateendproperties(Dependent) dependentpropendmethodsfunctionobj = MySaveLoader(varargin) obj@matlab.System(); setProperties(obj,nargin,varargin{:});endfunctionset.dependentprop(obj, value) obj.pdependentprop = min(value, 5);endfunctionvalue = get.dependentprop(obj) value = obj.pdependentprop;endendmethods(Access = protected)functionsetupImpl(obj) obj.state = 42; obj.child = Counter;endfunctionout = stepImpl(obj,in) obj.state = in + obj.state + obj.protectedprop +...obj.pdependentprop; out = obj.child(obj.state);endend% Serializationmethods(Access = protected)functions = saveObjectImpl(obj)% Call the base class methods = saveObjectImpl@matlab.System(obj);% Save the child System objectss.child = matlab.System.saveObject(obj.child);% Save the protected & private propertiess.protectedprop = obj.protectedprop; s.pdependentprop = obj.pdependentprop;% Save the state only if object called and not releasedifisLocked(obj) s.state = obj.state;endendfunctionloadObjectImpl(obj,s,isInUse)% Load child System objectsobj.child = matlab.System.loadObject(s.child);% Load protected and private propertiesobj.protectedprop = s.protectedprop; obj.pdependentprop = s.pdependentprop;% Load the state only if object is in useifisInUse obj.state = s.state;end% Call base class method to load public propertiesloadObjectImpl@matlab.System(obj,s,isInUse);endendend

参考

|