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