Методы в отдельных файлах

Папки классов

Можно задать методы класса в файлах, которые являются отдельными от файла определения класса, за определенными исключениями (см. Методы, которые вы должны определить в файле класса).

Чтобы использовать несколько файлов для определений классов, поместите файлы классов в папку с именем, начинающимся с @ символ, за которым следует имя класса (это называется папкой класса). Убедитесь, что родительская папка папки класса находится в 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), формат файла Живого кода (.mlx), MEX-функции (зависящие от платформы расширения) и Pcode-файлы (.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 folder, задайте функцию:

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 файл. Вы не можете задать эти методы в отдельных файлах:

  • Конструктор классов

  • Все функции, которые используют точки в своих именах, включая:

    • Методы конвертера, которые должны использовать имя пакета как часть имени класса, поскольку класс содержится в пакетах

    • Набор свойств и получение методов доступа

Связанная информация

Похожие темы