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 способ.