Используйте переходные свойства, чтобы избежать сохранения того, что можно создать при загрузке объекта. Например, объект может содержать детали компонента, которые можно регенерировать из сохраняемых данных. Регенерация этих компонентов также позволяет новым версиям класса создавать компоненты другим способом.
The YearlyRainfall иллюстрирует, как регенерировать график при загрузке объектов этого класса. YearlyRainfall объекты содержат столбчатую диаграмму месячной нормы осадков для заданного места и года. The Location и Year свойства являются обычными свойствами, значения которых сохраняются при сохранении объекта.
The Chart свойство содержит указатель на столбчатую диаграмму. При сохранении столбчатой диаграммы MATLAB® также сохраняет рисунок, оси и объект Bar и данные, необходимые для создания этих графических объектов. The YearlyRainfall проект класса устраняет необходимость сохранения объектов, которые он может регенерировать:
The Chart свойство Transient поэтому графические объекты не сохраняются.
ChartData является частная собственность, которая обеспечивает хранение данных объекта Bar (YData).
The load функция вызывает set.ChartData метод, передав ему сохраненные данные столбчатой диаграммы.
The 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