Совместимость с предыдущими версиями

Новый синтаксис определения класса, начатый с версии 7.6 программного обеспечения MATLAB

Версия 7.6 MATLAB вводит новый синтаксис для определения классов. Этот новый синтаксис включает:

  • classdef ключевое слово начинает блок кода определений классов. end оператор отключает определение класса.

  • В classdef блок кода, propertiesМетоды, и events также формирование рисунка ключевых слов, где вы задаете соответствующие члены класса.

Не может смешать иерархию классов

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

Только Один папка класса в классе

Для классов, заданных с помощью нового classdef ключевое слово, папка класса тени все папки класса, которые происходят после него на пути MATLAB. Классы, заданные в папках класса, должны определить местоположение всех файлов класса в той одной папке. Однако классы, заданные в папках класса, продолжают быть более приоритетными по сравнению с функциями и скриптами, имеющими то же имя, даже те функции и скрипты, которые появляются перед ними в путь.

Закрытые методы

Вы не должны задавать частные папки в папках класса в Версии 7.6. Можно установить Access метода припишите private вместо этого.

Изменения в конструкторах класса

Методы конструктора класса имеют два существенных различия. Конструкторы класса:

  • Не используйте class функция.

  • Должен вызвать конструктора суперкласса, только если вы хотите передать аргументы его конструктору. В противном случае никакой вызов конструктора суперкласса не необходим.

Пример старого и нового синтаксиса

Сравните следующие два Stock методы конструктора. Stock класс является подклассом Asset класс, который требует аргументов, передал его конструктору.

Функция конструктора перед версией 7.6

   function s = Stock(description,num_shares,share_price)
      s.NumShares = num_shares;
      s.SharePrice = share_price;
% Construct Asset object
      a = Asset(description,'stock',share_price*num_shares);
% Use the class function to define the stock object 
      s = class(s,'Stock',a);

Запишите тот же Stock конструктор класса как показано здесь. Задайте наследование на classdef линия и задает конструктора в methods блок.

Функция конструктора для версии 7.6

classdef Stock < Asset
   ...
   methods
 
      function s = Stock(description,num_shares,share_price)
% Call superclass constructor to pass arguments 
         s = s@Asset(description,'stock',share_price*num_shares);
         s.NumShares = num_shares;
         s.SharePrice = share_price;
      end % End of function
 
   end % End of methods block
end % End of classdef block

Новые возможности, начатые с версии 7.6

Примеры старых и новых

Реализация MATLAB Version 7.6 классов использует различный синтаксис от предыдущих релизов. Однако классы, написанные в предыдущих версиях, продолжают работать. Большая часть кода, который вы используете, чтобы реализовать методы, вероятно, останется то же самое, кроме того, где вы используете в своих интересах новые возможности.

Следующие разделы повторно реализуют примеры с помощью последнего синтаксиса. Исходная документация Классов и Объектов MATLAB реализовала эти те же примеры, и обеспечьте сравнение старого и нового синтаксиса.

Представление полиномов с классами

Иерархия классов для разнородных массивов