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