Методы и функции

Блок методов

Задайте методы, когда 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

Вызов статического метода использование синтаксиса classnameMethodName :

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 файл. Конструктор не может быть в отдельном файле.

  • Класс Handle delete методы должны быть заданы в classdef файл. delete метод не может быть в отдельном файле.

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

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

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

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

Похожие темы