exponenta event banner

Сохранение данных объекта для воссоздания графических объектов

Что сохранить

Используйте временные свойства, чтобы избежать сохранения того, что можно воссоздать при загрузке объекта. Например, объект может содержать детали компонентов, которые можно регенерировать из сохраненных данных. Регенерация этих компонентов также позволяет новым версиям класса создавать компоненты другим способом.

Регенерировать при загрузке

YearlyRainfall показывает, как регенерировать граф при загрузке объектов этого класса. YearlyRainfall объекты содержат гистограмму месячного количества осадков для данного местоположения и года. Location и Year - обычные свойства, значения которых сохраняются при сохранении объекта.

Chart содержит дескриптор штриховой диаграммы. При сохранении штриховой диаграммы MATLAB ® также сохраняет фигуру, оси и объект Bar, а также данные, необходимые для создания этих графических объектов. YearlyRainfall конструкция класса исключает необходимость сохранения объектов, которые он может регенерировать:

  • Chart свойство - Transient таким образом, графические объекты не сохраняются.

  • ChartData является частным свойством, обеспечивающим хранение данных объекта Bar (YData).

  • load функция вызывает set.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

Связанные темы