exponenta event banner

Определение методов и функций классов

Блок методов

Определение методов как функций MATLAB ® в methods блок, внутри classdef блок. Метод конструктора имеет то же имя, что и класс, и возвращает инициализированный объект класса. Чтобы создать объект со значениями свойств, уникальными для этого экземпляра, назначьте значения свойствам в конструкторе класса. Завершение всех функций метода с помощью end заявление.

classdef ClassName
   properties
      PropertyName
   end
   methods
      function obj = ClassName(arg1,...)
         obj.PropertyName = arg1;
         ...
      end
      function ordinaryMethod(obj,arg1,...)
         ...
      end
   end
   methods (Static)
      function staticMethod(arg1,...)
         ...
      end
   end
end

Синтаксис вызова метода

MATLAB отличается от языков C++ и Java ® тем, что нет специального скрытого объекта класса, передаваемого всем методам. Необходимо явно передать объект класса методу. Крайний левый аргумент не обязательно должен быть объектом класса, а список аргументов может содержать несколько объектов. MATLAB отправляет метод, определенный классом доминирующего аргумента. Дополнительные сведения см. в разделе Вызов метода.

При вызове методы должны находиться в пути MATLAB. Например, при создании объекта и последующем изменении текущей папки на папку, из которой файл метода не виден, при вызове этого метода возникает ошибка.

Всегда используйте имена методов с учетом регистра в коде MATLAB.

Обычные методы

Вызовите обычные методы, используя синтаксис функции MATLAB или точечную нотацию. Например, предположим, что у вас есть класс, который определяет ordinaryMethod. Передайте объект определяющего класса и все необходимые аргументы.

classdef MyClass
   methods
      function out = ordinaryMethod(obj,arg1)
      ...
      end
   end
end

Звонить ordinaryMethod использование объекта obj класса и любого синтаксиса:

obj = MyClass;
r = ordinaryMethod(obj,arg1);
r = obj.ordinaryMethod(arg1);

Статические методы

Статические методы не требуют объекта класса. Чтобы вызвать статический метод, префиксируйте имя метода именем класса, чтобы MATLAB мог определить, какой класс определяет метод.

classdef MyClass
   methods (Static)
      function out = staticMethod(arg1)
      ...
      end
   end
end

Звонить staticMethod с использованием синтаксиса classname.methodname:

r = MyClass.staticMethod(arg1);

Сведения о методах, для которых не требуются объекты их класса, см. в разделе Статические методы.

Частные методы

Используйте Access атрибут метода для создания частного метода. Использование частной папки не требуется.

Список атрибутов метода см. в разделе Атрибуты метода.

Более подробная информация о методах

Методы

Функции, связанные с классами

В файле, содержащем определение класса, можно определить функции, не являющиеся методами класса (classdef). Определение локальных функций вне classdef - end блок, но в том же файле, что и определение класса. Функции, определенные в classdef файлы работают как локальные функции. Эти функции можно вызывать из любого места в одном и том же файле, но они не отображаются вне файла, в котором они определены.

Локальные функции в classdef полезны для служебных функций, которые используются только в этом файле. Эти функции могут принимать или возвращать аргументы, которые являются экземплярами класса, но, это не обязательно, как в случае обычных методов. Например, следующий код определяет myUtilityFcn за пределами classdef блок:

classdef MyClass
   properties
      PropName
   end
   methods
      function obj = MyClass(arg1)
         obj.PropName = arg1;
      end 
   end 
end % End of classdef

function myUtilityFcn
   ...
end

Можно также создать функции пакета, которые требуют использования имени пакета при вызове этих функций.

Как перегружать функции и операторов

Перегрузка функций MATLAB для класса путем определения метода класса с тем же именем, что и функция, которую требуется перегрузить. MATLAB отправляется методу класса, когда функция вызывается с экземпляром класса.

Можно перегрузить арифметические, логические, реляционные и индексные операторы MATLAB, определив методы классов с соответствующими именами.

См. раздел handle для списка операций, определенных для этого класса. Все классы, полученные из handle наследуют эти методы.

Правила определения методов в отдельных файлах

К методам, определенным в отдельных файлах, применяются следующие правила:

  • Чтобы задать атрибуты для метода, определенного в отдельном файле, объявите этот метод в блоке методов в classdef файл. Укажите значения атрибутов с помощью блока методов.

  • Сопоставить синтаксис, объявленный в блоке методов (если используется), с синтаксисом метода function линия.

  • Отдельный файл должен находиться в классе (@) папка.

  • Метод конструктора класса должен быть определен в classdef файл. Конструктор не может находиться в отдельном файле.

  • Класс дескрипторов delete методы должны быть определены в classdef файл. delete метод не может находиться в отдельном файле.

    Все функции, использующие точки в своих именах, должны быть определены в classdef файл, включая:

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

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

Дополнительные сведения об определении методов в отдельных файлах см. в разделе Методы в отдельных файлах.

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