Классы дескрипторов и значений полезны в различных ситуациях. Например, классы значений позволяют создавать классы массивов, которые имеют то же поведение, что и числовые классы MATLAB ®.
Представление полиномов классами и представление структурированных данных классами предоставляет примеры классов значений.
Классы дескрипторов позволяют создавать объекты, которые могут совместно использовать несколько функций или объектов. Обработка объектов позволяет выполнять более сложные взаимодействия между объектами, поскольку позволяет объектам ссылаться друг на друга.
Реализация связанных списков с классами и разработка классов - типичный рабочий процесс содержит примеры класса дескрипторов.
Объекты класса значений ведут себя как обычные переменные MATLAB. Типичным использованием классов значений является определение структур данных. Например, предположим, что требуется определить класс для представления многочленов. Этот класс может определить свойство, содержащее список коэффициентов для многочлена. Он может реализовывать методы, позволяющие выполнять различные операции над полиномиальным объектом. Например, реализовать сложение и умножение без преобразования объекта в другой класс.
Класс значений подходит, поскольку можно скопировать полиномиальный объект и иметь два объекта, которые являются идентичными представлениями одного и того же многочлена. Пример классов значений см. в разделе Подклассы встроенных типов MATLAB.
Сведения о семантике передачи значений MATLAB см. в разделе Избегание ненужных копий данных.
Объекты-дескрипторы полезны в особых обстоятельствах, когда объект представляет физический объект, такой как граф или внешнее устройство, а не математический объект, такой как число или матрица. Объекты-дескрипторы являются производными класса дескрипторов, который предоставляет такие функции, как события и прослушиватели, метод деструктора и поддержку динамических свойств.
Используйте класс дескриптора в следующих случаях:
Ни один из двух экземпляров класса не может иметь одинаковое состояние, что делает невозможным наличие точных копий. Например:
Копия графического объекта (например, линия) имеет другую позицию в родительском списке нижестоящих элементов, чем объект, из которого он был скопирован. Поэтому эти два объекта не идентичны.
Узлы в списках или деревьях, имеющие определенные соединения с другими узлами - два узла не могут иметь одинаковые соединения.
Класс представляет физические и уникальные объекты, такие как последовательные порты и принтеры.
Класс представляет видимые объекты, такие как графические компоненты.
Класс определяет события и уведомляет прослушивателей о возникновении события (notify является методом класса дескриптора).
Класс создает прослушиватели путем вызова handle класс addlistener способ.
Класс подклассов dynamicprops класс (подкласс handle), чтобы экземпляры могли определять динамические свойства.
Класс подклассов matlab.mixin.SetGet класс (подкласс handle), чтобы он мог реализовать интерфейс набора/получения стилей графических объектов для доступа к значениям свойств.
Требуется создать одиночный класс или класс, в котором отслеживается количество экземпляров в конструкторе.
Экземпляры класса не могут совместно использовать состояние, например узлы в связанном списке.