Построение массивов объектов

Построение массивов в конструкторе

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

Для примера, 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

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

Похожие темы