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