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