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

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

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

Например, 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

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

Похожие темы