Main Content

オブジェクト データを保存してグラフィックス オブジェクトを再作成

保存対象

過渡的プロパティを使用して、オブジェクトの読み込み時に再作成できるものは保存しないようにします。たとえば、オブジェクトには保存されたデータから再生成できるコンポーネントが含まれていることがあります。また、これらのコンポーネントを再生成することにより、新しいバージョンのクラスでコンポーネントを異なる方法で作成できるようになります。

読み込み時の再生成

YearlyRainfall クラスによって、そのクラスのオブジェクトを読み込むときにグラフがどのように再生成されるかが示されます。YearlyRainfall オブジェクトには、特定の場所と年の、月ごとの降水量を表す棒グラフが含まれています。Location および Year プロパティは通常のプロパティであり、オブジェクトを保存するときに値が保存されます。

Chart プロパティには棒グラフのハンドルが含まれています。棒グラフを保存すると、MATLAB® によって figure、axes、bar の各オブジェクトと、これらのグラフィックス オブジェクトの作成に必要なデータも保存されます。YearlyRainfall クラスの設計では、再生成可能なオブジェクトの保存は不要となっています。

  • Chart プロパティは Transient であるため、グラフィックス オブジェクトは保存されません。

  • ChartData は bar オブジェクト データ (YData) のストレージを提供するプライベート プロパティです。

  • 関数 loadset.ChartData メソッドを呼び出し、保存されている棒グラフのデータを渡します。

  • setup メソッドは棒グラフを再生成し、ハンドルを Chart プロパティに割り当てます。クラス コンストラクターと set.ChartData メソッドの両方が setup を呼び出します。

classdef YearlyRainfall < handle
   properties
      Location
      Year
   end
   properties(Transient)
      Chart
   end
   properties(Access = private)
      ChartData
   end
   methods
      function rf = YearlyRainfall(data)
         setup(rf,data);
      end
      function set.ChartData(obj,V)
         setup(obj,V);
      end
      function V = get.ChartData(obj)
         V = obj.Chart.YData;
      end
   end
   methods(Access = private)
      function setup(rf,data)
         rf.Chart = bar(data);
      end
   end
end

階段状グラフへの変更

YearlyRainfall クラスの設計の利点は、以前に保存したオブジェクトの互換性を保ちつつ、使用されるグラフのタイプを変更できるという柔軟性です。オブジェクトを読み込むと、MAT ファイルに保存されたデータのみに基づいてグラフが再生成されます。

たとえば、setup メソッドを変更してグラフの種類を棒グラフから階段状グラフに変更します。

methods(Access = private)
   function setup(rf,data)
      rf.Chart = stairs(data);
   end
end

関連するトピック