exponenta event banner

Инициализация свойств и настройка разовых вычислений

В этом примере показано, как записать код для инициализации и настройки системного object™.

В этом примере можно выделить файловые ресурсы, открыв файл, чтобы системный объект мог выполнить запись в этот файл. Эти задачи инициализации выполняются один раз во время установки, а не каждый раз при запуске объекта.

Определение общих свойств для инициализации

В этом примере определяется открытый Filename и укажите значение этого свойства в качестве неперестраиваемого символьного вектора, default.bin. Пользователи не могут изменять неперестраиваемые свойства после setup был вызван метод.

properties (Nontunable)
  Filename = "default.bin"
end

Определение частных свойств для инициализации

Пользователи не могут получить доступ к частным свойствам напрямую, но только с помощью методов объекта System. В этом примере определяется pFileID собственность как частная собственность. Это свойство также определяется как скрытое, чтобы указать, что оно является внутренним свойством, которое никогда не отображается пользователю.

properties (Hidden,Access = private)
  pFileID;
end

Определение настройки

Вы используете setupImpl для выполнения задач установки и инициализации. Необходимо включить код в setupImpl метод, который требуется выполнить только один раз. setupImpl вызывается один раз при первом запуске объекта. В этом примере ресурсы файлов выделяются путем открытия файла для записи двоичных данных.

methods
  function setupImpl(obj)
    obj.pFileID = fopen(obj.Filename,"wb");
    if obj.pFileID < 0
       error("Opening the file failed");
    end
  end
end

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

Полный файл определения класса с инициализацией и настройкой

classdef MyFile < matlab.System
% MyFile write numbers to a file

    % These properties are nontunable. They cannot be changed
    % after the setup method has been called or the object
    % is running.
    properties (Nontunable)
        Filename = "default.bin" % the name of the file to create
    end

    % These properties are private. Customers can only access
    % these properties through methods on this object
    properties (Hidden,Access = private)
        pFileID; % The identifier of the file to open
    end

    methods (Access = protected)
        % In setup allocate any resources, which in this case
        % means opening the file.
        function setupImpl(obj)
            obj.pFileID = fopen(obj.Filename,'wb');
            if obj.pFileID < 0
                error("Opening the file failed");
            end
        end

        % This System object writes the input to the file.
        function stepImpl(obj,data)
            fwrite(obj.pFileID,data);
        end

        % Use release to close the file to prevent the
        % file handle from being left open.
        function releaseImpl(obj)
            fclose(obj.pFileID);
        end
    end
end

См. также

| | |

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