В этом примере показано, как записать код для инициализации и настройки системного 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
endmatlab.System Constructor | releaseImpl | setupImpl | stepImpl