Можно добавить свойства в экземпляры классов, которые выводят из dynamicprops
класс. Эти динамические свойства иногда упоминаются как свойства экземпляра. Используйте динамические свойства, чтобы присоединить временные данные к объектам или присвоить данные, которые вы хотите сопоставить с экземпляром класса, но не всеми объектами того класса.
Больше чем для одной программы возможно задать динамические свойства на том же объекте. В этих случаях избегайте конфликтов по совпадению имен. Имена динамического свойства должны быть допустимыми идентификаторами MATLAB® (см. Имена переменных), и не может быть то же имя как метод класса.
После того, как заданный, динамические свойства ведут себя во многом как заданные классом свойства:
Установите и запросите значения динамических свойств с помощью записи через точку. (См. Данные о Присвоении к Динамическому свойству.)
MATLAB сохраняет и загружает динамические свойства, когда вы сохраняете и загружаете объекты, к которым они присоединяются. (См. Динамические свойства и ConstructOnLoad.)
Задайте атрибуты для динамического свойства. (См. Атрибуты Динамического свойства Набора).
По умолчанию динамические свойства имеют свой NonCopyable
припишите набор true
. Если вы копируете объект, содержащий динамическое свойство, динамическое свойство не копируется. (См. Объекты с Динамическими свойствами),
Добавьте набор свойств и получите методы доступа. (См. Набор и методы get для Зависимых Свойств.)
Прислушайтесь к событиям динамического свойства. (См. События Динамического свойства.)
Доступ к значениям динамического свойства от массивов объектов, с ограниченным синтаксисом. (См. Динамические свойства Доступа в Массивах.)
isequal
функционируйте всегда возвращает false
при сравнении объектов, которые имеют динамические свойства, даже если свойства имеют то же имя и значение. Сравнить объекты, которые содержат динамические свойства, перегрузка isequal
для вашего класса.
Любой класс, который является подклассом dynamicprops
класс (который является самостоятельно подклассом handle
класс), может задать динамические свойства с помощью addprop
метод. Синтаксис:
P = addprop(H,'PropertyName')
где:
P
массив meta.DynamicProperty
объекты
H
массив указателей
PropertyName
имя динамического свойства, которое вы добавляете в каждый объект
Используйте только допустимые имена при именовании динамических свойств (см. Имена переменных). Кроме того, не используйте имена что:
Совпадают с именем метода класса
Совпадают с именем события класса
Содержите период (.
)
Имена функции, которые поддерживают функциональность массивов: empty
перемещение
ctranspose,'
перестановка
изменение
Отображение
disp
детали
, или sort
.
Чтобы установить атрибуты свойства, используйте meta.DynamicProperty
объект сопоставлен с динамическим свойством. Например, если P
объект, возвращенный addprop
, этот оператор устанавливает Hidden
свойства припишите
true
:
P.Hidden = true;
Свойство приписывает Constant
и Abstract
не имейте никакого значения для динамических свойств. Устанавливание значения этих атрибутов к true
не оказывает влияния.
Удалите динамическое свойство путем удаления его meta.DynamicProperty
объект:
delete(P);
Предположим, вы используете предопределенный набор классов виджета пользовательского интерфейса (кнопки, ползунки, флажки, и т.д.). Вы хотите сохранить местоположение каждого экземпляра класса виджета. Примите, что классы виджета не спроектированы, чтобы хранить данные о местоположении для вашей конкретной схемы размещения. Вы не хотите создавать карту или хэш-таблицу, чтобы обеспечить эту информацию отдельно.
Принятие button
класс является подклассом dynamicprops
, добавьте динамическое свойство, чтобы хранить ваши данные о размещении. Вот простой класс, чтобы создать uicontrol
кнопка:
classdef button < dynamicprops properties UiHandle end methods function obj = button(pos) if nargin > 0 if length(pos) == 4 obj.UiHandle = uicontrol('Position',pos,... 'Style','pushbutton'); else error('Improper position') end end end end end
Создайте экземпляр button
класс, добавляет динамическое свойство и установило свое значение:
b1 = button([20 40 80 20]);
b1.addprop('myCoord');
b1.myCoord = [2,3];
Доступ к динамическому свойству точно так же, как любое другое свойство, но только на объекте, на котором вы задали его:
b1.myCoord
ans = 2 3
Используя непубличный доступ с динамическими свойствами не рекомендуется, потому что эти свойства принадлежат определенным экземплярам, которые часто создаются за пределами методов класса. Доступ к атрибуту динамического свойства применяется к классу экземпляра, который содержит динамическое свойство. Доступ к динамическому свойству к атрибуту не обязательно применяется к классу, метод которого добавляет динамическое свойство.
Например, если метод базового класса добавляет динамическое свойство с частным доступом к экземпляру, частный доступ применяется только к классу экземпляра.
Для получения дополнительной информации об атрибутах динамического свойства смотрите meta.DynamicProperty
. Используйте указатель findprop
метод, чтобы получить meta.DynamicProperty
объект.