В этом примере показано, как записать код для инициализации и настройки системного object™.
В этом примере вы выделяете файловые ресурсы, открывая файл, чтобы системный объект мог записать в этот файл. Вы делаете эти задачи инициализации один раз во время настройки, а не каждый раз, когда вы запускаете объект.
Определите общественную собственность, которые нужно инициализировать
Определите частную собственность, которые нужно инициализировать
В этом примере вы задаете общие Filename
и задайте значение этого свойства как нетронутый вектор символов, default.bin
. Пользователи не могут изменять nontunable свойства после setup
был вызван метод.
properties (Nontunable) Filename = "default.bin" end
Пользователи не могут получить доступ к private свойствам напрямую, но только через методы системного объекта. В этом примере вы задаете pFileID
свойство как частная собственность. Вы также определяете это свойство как hidden, чтобы указать, что это внутреннее свойство никогда не отображается пользователю.
properties (Hidden,Access = private)
pFileID;
end
Вы используете setupImpl
метод для выполнения задач настройки и инициализации. Вы должны включить код в setupImpl
метод, который необходимо выполнить только один раз. The 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
matlab.System
Constructor
| releaseImpl
| setupImpl
| stepImpl