Можно задать методы класса в файлах, которые являются отдельными от файла определения класса за определенными исключениями (см. Методы, которые Необходимо Задать в 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 обрабатывает any.m файл в папке класса как метод класса. Базовое имя файла должно быть допустимым именем функции MATLAB. Допустимые имена функций начинаются с буквенного символа и могут содержать буквы, числа или символы нижнего подчеркивания.
Чтобы задать метод в отдельном файле в папке класса, создайте функцию в файле с расширением .m. Не используйте 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. Вы не можете задать эти методы в отдельных файлах:
Конструктор класса
Все функции, которые используют точки на их имена, включая:
Методы конвертера, которые должны использовать имя пакета в качестве части имени класса, потому что класс содержится в пакетах
Набор свойств и получает методы доступа