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

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

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

Регенерация при загрузке

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

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

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

  • ChartData является частной собственностью, которая обеспечивает устройство хранения данных для данных объектов Панели (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

Похожие темы

Была ли эта тема полезной?