Подклассы встроенных типов MATLAB

Встроенные типы MATLAB

Встроенные типы представляют фундаментальные виды данных, такие как числовые массивы, логические массивы и символьные массивы. Другие встроенные типы, такие как массивы ячеек и структуры, содержат данные, принадлежащие любому классу.

Встроенные типы определяют методы, которые выполняют операции с объектами этих классов. Например, можно выполнить операции с числовыми массивами, такими как, сортировка, арифметические и логические операции.

Смотрите Основные классы MATLAB для получения дополнительной информации о MATLAB® встроенные классы.

Примечание

Это ошибка - задать класс, имя которого совпадает со встроенным классом.

Встроенные типы, которые можно подклассифицировать

Можно подклассифицировать числовые классы MATLAB и logical класс. Список числовых типов см. в разделе Числовые типы.

Вы не можете подклассифицировать любой класс, у которого есть Sealed для атрибута задано значение true. Чтобы определить, является ли класс Sealed, запросить метаданные классов:

mc = ?ClassName;
mc.Sealed

Значение 0 указывает, что класс не Sealed и может быть подклассами.

Зачем встроенные типы подкласса

Подкласс встроенного класса для расширения операций, которые можно выполнить для определенного класса данных. Например, когда вы хотите:

  • Для выполнения уникальных операций с данными класса.

  • Иметь возможность использовать методы встроенного класса и другие встроенные функции непосредственно с объектами подкласса. Например, вам не нужно повторять все математические операторы, если вы получают из класса, такого как double который определяет эти операторы.

Какие функции работают с подклассами встроенных типов

Рассмотрим класс, который задает перечисления. Он может быть выведен из целочисленного класса и наследовать методы, которые позволяют вам сравнивать и сортировать значения. Для примера целочисленные классы, такие как int32 поддержка всех реляционных методов (eq, ge, gt, le, lt, ne).

Чтобы увидеть список функций, которые подкласс унаследовал как методы, используйте methods функция:

methods('SubclassName')

Обычно можно использовать объект подкласса с любым:

  • Унаследованные методы

  • Функции, которые обычно принимают входные параметры того же класса, что и суперкласс.

Поведение встроенных функций с объектами подкласса

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

Встроенные функции и методы, которые работают на встроенных классах, могут вести себя по-разному при вызове с подклассами встроенных классов. Их поведение зависит от того, какую функцию вы используете и задает ли ваш подкласс свойства.

Категории поведения

Когда вы вызываете унаследованный метод для подкласса встроенного класса, результат зависит от характера операции, выполненной методом. Поведение этих методов соответствует нескольким категориям.

  • Операции со значениями данных возвращают объекты суперкласса. Для примера, если вы подкласс double и выполните сложение для двух объектов подкласса, MATLAB добавляет числовые значения и возвращает значение класса double.

  • Операции с ориентацией или структурой объектов возврата данных подкласса. Методы, которые выполняют эти виды операций, включают, reshape, permute, transposeи так далее.

  • Преобразование объекта подкласса во встроенный класс возвращает объект указанного класса. Функции, такие как uint32, double, char работать с объектами подкласса так же, как и со встроенными объектами.

  • Сравнение объектов или тестирование на включение в определенный набор возвращает логические или встроенные объекты, в зависимости от функции. Функции, такие как isequal, ischar, isobject работать с объектами подкласса так же, как и с объектами суперкласса.

  • Выражения индексации возвращают объекты подкласса. Если подкласс определяет свойства, индексация по умолчанию больше не работает. Подкласс должен определять свои собственные методы индексирования.

  • Конкатенация возвращает объект подкласса. Если подкласс определяет свойства, то конкатенация по умолчанию больше не работает, и подкласс должен определять свои собственные методы конкатенации.

Чтобы перечислить встроенные функции, которые работают с подклассом встроенного класса, используйте methods функция.

Встроенные подклассы, определяющие свойства

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

Подкласс должен определять, что означают индексация и конкатенация для класса со свойствами. Если ваш подкласс нуждается в функциональности индексации и конкатенации, то подкласс должен реализовать соответствующие методы.

Методы индексации

Для поддержки операций индексации подкласс должен реализовать следующие методы:

  • subsasgn - Реализуйте запись через точку и индексированные назначения

  • subsref - Реализуйте запись через точку и индексированные ссылки

  • subsindex - Реализуйте объект как значение индекса

Методы конкатенации

Чтобы поддержать конкатенацию, подкласс должен реализовать следующие методы:

  • horzcat - Реализация горизонтальной конкатенации объектов

  • vertcat - Реализация вертикальной конкатенации объектов

  • cat - Реализация конкатенации объектных массивов по заданному измерению

Похожие темы