Методы классов можно определить в файлах, которые отделены от файла определения классов, за некоторыми исключениями (см. Методы, которые необходимо определить в файле classdef).
Чтобы использовать несколько файлов для определений классов, поместите файлы классов в папку с именем, начинающимся с @ символ, за которым следует имя класса (это называется папкой класса). Убедитесь, что родительская папка класса находится в пути MATLAB ®.
Если папка класса содержится в одной или нескольких папках пакета, то папка пакета верхнего уровня должна находиться в пути MATLAB.
Например, папка @MyClass должен содержать файл MyClass.m (который содержит classdef блок) и содержит другие методы и функцию, определенные в файлах, имеющих .m расширение. Папка @MyClass может содержать несколько файлов:
@MyClass/MyClass.m @MyClass/subsref.m @MyClass/subsasgn.m @MyClass/horzcat.m @MyClass/vertcat.m @MyClass/myFunc.m
MATLAB рассматривает любой файл функции в папке класса как метод класса. Файлы функций могут быть кодом MATLAB (.m), формат файла Live Code (.mlx), функции MEX (расширения, зависящие от платформы) и файлы P-кода (.p). Базовым именем файла должно быть допустимое имя функции MATLAB. Допустимые имена функций начинаются с алфавитного символа и могут содержать буквы, цифры или знаки подчеркивания.
Для получения информации об определении методов как функций C++ MEX см. Использование функций MEX для методов класса MATLAB.
Чтобы определить метод в отдельном файле в папке класса, создайте функцию в файле. Не используйте method-end ключевые слова в этом файле. Назовите файл именем функции, как и любую функцию.
В myFunc.m файл, реализовать метод:
function output = myFunc(obj,arg1,arg2) ...% code here end
Рекомендуется объявлять подпись функции в classdef файл в блоке методов:
classdef MyClass methods output = myFunc(obj,arg1,arg2) end ... end
classdef ФайлПри указании атрибутов метода для метода, определяемого в отдельном файле функции, включите сигнатуру метода в methods блок в classdef файл. Этот блок методов задает атрибуты, которые применяются к методу.
Например, следующий код показывает метод с Access установить в значение private в methods блок. Реализация метода находится в отдельном файле. Не включать function или end ключевые слова в methods блок. Включить только сигнатуру функции, отображающую входные и выходные аргументы.
classdef MyClass methods (Access = private) output = myFunc(obj,arg1,arg2) end end
В файле с именем myFunc.m, в @MyClass , определите функцию:
function output = myFunc(obj,arg1,arg2) ... end
Чтобы создать статический метод, задайте метод Static атрибут для true и перечислить сигнатуру функции в блоке статических методов в classdef файл. Включите входные и выходные аргументы с именем функции. Например:
classdef MyClass ... methods (Static) output = staticFunc1(arg1,arg2) staticFunc2 end ... end
Определите функции в отдельных файлах, используя одну и ту же сигнатуру функции. Например, в файле @MyClass/staticFunc1.m:
function output = staticFunc1(arg1,arg2) ... end
и в @Myclass/staticFunc2.m:
function staticFunc2 ... end
classdef ФайлОпределите следующие методы в classdef файл. Невозможно определить следующие методы в отдельных файлах:
Конструктор класса
Все функции, использующие точки в названиях, включая:
Методы конвертера, которые должны использовать имя пакета как часть имени класса, поскольку класс содержится в пакетах
Набор свойств и методы получения доступа