Задайте методы и функции классов

The Methods Block (методы

Определите методы как 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 файл. Задайте значения атрибутов с блоком Methods.

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

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

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

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

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

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

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

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

Похожие темы