Инициализация объектов при загрузке

Вызов конструктора, когда загружаемые объекты

MATLAB® не вызывает конструктора класса при загрузке объекта из MAT-файла. Однако, если вы устанавливаете ConstructOnLoad атрибут класса к true, load действительно вызывает конструктора без аргументов.

Включите ConstructOnLoad когда вы не хотите реализовывать loadobj метод, но должен выполнить некоторые действия во время создания. Например, включите ConstructOnLoad когда вы указываете прослушиватели для другого объекта. Убедитесь, что MATLAB может вызвать конструктора класса без аргументов, не генерируя ошибку.

Набор атрибутов на суперклассах не наследован подклассами. Поэтому MATLAB не использует значение суперкласса ConstructOnLoad припишите когда загружаемые объекты. Если вы хотите, чтобы MATLAB вызвал конструктора класса, установите ConstructOnLoad припишите в своем определенном подклассе.

Если конструктор требует входных параметров, используйте loadobj метод.

Инициализация объектов в loadobj Метод

Используйте loadobj метод, когда конструктор класса требует, чтобы входные параметры выполнили объектную инициализацию.

LabResults класс совместно использует шаги инициализации объекта конструктора с loadobj метод путем выполнения этих шагов в assignStatus метод.

Объекты LabResults класс:

  • Содержите значения для результатов тестов.

  • Присвойте состояние для каждого значения на основе набора критериев.

classdef LabResult
   properties
      CurrentValue
   end
   properties (Transient)
      Status
   end
   methods
      function obj = LabResult(cv)
         obj.CurrentValue = cv;
         obj = assignStatus(obj);
      end
      function obj = assignStatus(obj)
         v = obj.CurrentValue;
         if v < 10
            obj.Status = 'Too low';
         elseif v >= 10 && v < 100
            obj.Status = 'In range';
         else
            obj.Status = 'Too high';
         end
      end
   end
   methods (Static)
      function obj = loadobj(s)
         if isstruct(s)
            cv = s.CurrentValue;
            obj = LabResults(cv);
         else
            obj = assignStatus(s);
         end
      end
   end
end

LabResults класс использует loadobj определить состояние данного тестового значения. Этот подход обеспечивает путь к:

  • Измените критерии определения состояния

  • Убедитесь, что объекты всегда используют текущие критерии

Вы не должны реализовывать saveobj метод.

Похожие темы