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

Папки класса

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

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

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

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

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

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

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

Похожие темы