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

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

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

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

  • В блоке classdef кода properties, methods и 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 реализовала эти те же примеры, и обеспечьте сравнение старого и нового синтаксиса.

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

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