Зависимые свойства не хранят данные. Значение зависимого свойства зависит от некоторого другого значения, такого как значение независимого свойства.
Зависимые свойства должны задать получать-методы-доступа (добраться. ) определить значение для свойства, когда свойство запрошено. PropertyName
Значения, возвращенные зависимым свойством, добираются, методы не рассматриваются при тестировании на объектное использование равенства isequal и isequaln.
Чтобы смочь установить значение зависимого свойства, свойство должно задать метод доступа набора (набор. ). Метод доступа набора свойств обычно присваивает значение другому, независимому свойству для устройства хранения данных значения.PropertyName
Например, Account класс возвращает значение для зависимого Balance свойство, которое зависит от значения Currency свойство. get.Balance метод запрашивает Currency свойство прежде, чем вычислить значение для Balance свойство.
MATLAB® вызывает get.Balance метод, когда Balance свойство запрошено. Вы не можете вызвать get.Balance явным образом.
Вот частичный список класса, показывающего зависимое свойство и получать метод:
classdef Account properties Currency DollarAmount end properties (Dependent) Balance end ... methods function value = get.Balance(obj) c = obj.Currency; switch c case 'E' v = obj.DollarAmount / 1.1; case 'P' v = obj.DollarAmount / 1.5; otherwise v = obj.DollarAmount; end format bank value = v; end end end
Одно приложение свойства добирается, метод должен определить значение свойства только, когда вы нуждаетесь в нем и стараетесь не хранить значение. Чтобы использовать этот подход, установите свойство Dependent припишите true:
properties (Dependent = true) Prop end
Получить метод для Prop свойство определяет значение того свойства и присваивает его объекту из метода:
function value = get.Prop(obj)
value = calculateValue;
...
endЭтот get вызовы метода функциональный или статический метод под названием calculateValue вычислить значение свойства и возвращает value в результате. Свойство добирается, метод может принять любые меры, необходимо в рамках метода, чтобы произвести выходное значение.
Поскольку пример свойства получает метод, смотрите, Вычисляют Данные по требованию.
Несмотря на то, что зависимое свойство не хранит свое значение, можно задать метод установки для зависимого свойства позволить коду установить свойство.
Например, propertyChange класс значения, который изменяет название свойства от OldPropName к NewPropName. Можно продолжить позволять использование старого названия, не отсоединяя его новым пользователям. Чтобы поддержать старое имя свойства, задайте OldPropName как зависимое свойство с набором и получают методы. Как с независимыми свойствами, метод установки в классе значения должен возвратить модифицированный объект.
classdef propertyChange properties NewPropName end properties (Dependent, Hidden) OldPropName end methods function obj = set.OldPropName(obj,val) obj.NewPropName = val; end function value = get.OldPropName(obj) value = obj.NewPropName; end end end
Нет никакой памяти, потраченной впустую путем хранения и старых и новых значений свойств. Код это получает доступ к OldPropName продолжает работать как ожидалось. Установка Hidden атрибут OldPropName препятствует тому, чтобы новые пользователи видели свойство.
Присвоения, сделанные из методов набора свойств, вызывают выполнение любых методов установки, заданных для устанавливаемых свойств. Смотрите Вычисляют Данные по требованию для примера.
Если вы используете зависимое свойство только, чтобы возвратить значение, то не задавайте метод доступа набора для зависимого свойства. Вместо этого установите SetAccess атрибут зависимого свойства к private. Например, полагайте, что следующее получает метод для MaxValue свойство:
methods function mval = get.MaxValue(obj) mval = max(obj.BigArray(:)); end end
Этот пример использует MaxValue свойство возвратить значение, которое это вычисляет только, когда запрошено. Для этого приложения задайте MaxValue свойство как зависимое и частное:
properties (Dependent, SetAccess = private) MaxValue end