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

Папки класса

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

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

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

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

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

Сопутствующая информация

Похожие темы