exponenta event banner

Создание массивов объектов

Создание массивов в конструкторе

Конструктор класса может создать массив, построив массив и вернув его в качестве выходного аргумента.

Например, ObjectArray создает массив объектов того же размера, что и входной массив. Затем инициализирует Value свойство каждого объекта к соответствующему значению входного массива.

classdef ObjectArray
   properties
      Value
   end
   methods
      function obj = ObjectArray(F)
         if nargin ~= 0
            m = size(F,1);
            n = size(F,2);
            obj(m,n) = obj;
            for i = 1:m
               for j = 1:n
                  obj(i,j).Value = F(i,j);
               end
            end
         end
      end
   end
end

Для предварительного назначения массива объектов сначала назначьте последний элемент массива. MATLAB ® заполняет первые и предпоследние элементы массива ObjectArray объект.

После предварительного назначения массива назначьте каждый объект Value к соответствующему значению во входном массиве F. Для использования класса:

  • Создание массива магических квадратных чисел 5 на 5

  • Создание массива объектов 5 на 5

F = magic(5); 
A = ObjectArray(F);
whos
  Name      Size            Bytes  Class          Attributes

  A         5x5               304  ObjectArray              
  F         5x5               200  double   

Ссылка на значения свойств в массивах объектов

Задан массив объектов objArray в котором каждый объект имеет свойство PropName:

  • Ссылка на значения свойств определенных объектов с помощью индексирования массива:

    objArray(ix).PropName
  • Ссылка на все значения одного свойства в массиве объектов с помощью точечной нотации. MATLAB возвращает список значений свойств, разделенных запятыми.

    objArray.PropName
  • Чтобы назначить переменную список, разделенный запятыми, заключите правое выражение в скобки:

    values = [objArray.PropName]

Например, учитывая ObjProp класс:

classdef ObjProp
   properties
      RegProp
   end
   methods
      function obj = ObjProp
         obj.RegProp = randi(100);
      end
   end
end

Создание массива ObjProp объекты:

for k = 1:5
   objArray(k) = ObjProp;
end

Доступ к RegProp свойство второго элемента массива объектов с использованием индексации массива:

objArray(2).RegProp
ans =

    91

Присвоение значений всем RegProp свойства числового массива:

propValues = [objArray.RegProp]
propValues =

    82    91    13    92    64

Используйте стандартные операции индексирования для доступа к значениям числового массива. Дополнительные сведения о числовых массивах см. в разделе Матрицы и массивы.

Связанные темы