exponenta event banner

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

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

Методы классов можно определить в файлах, которые отделены от файла определения классов, за некоторыми исключениями (см. Методы, которые необходимо определить в файле 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 файл. Невозможно определить следующие методы в отдельных файлах:

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

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

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

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

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

Связанные темы