Преобразователи объектов

Почему конвертеры реализации

Можно преобразовать объект одного класса к объекту другого класса. Метод конвертера имеет то же имя как класс, который это преобразовывает в, такие как char или double. Думайте о методе конвертера как о перегруженном методе конструктора другого класса. Конвертер берет экземпляр своего собственного класса и возвращает объект различного класса.

Конвертеры включают вам к:

  • Используйте методы, заданные для другого класса

  • Гарантируйте, что выражения включающие объекты смешанных типов классов выполняются правильно

  • Управляйте, как экземпляры интерпретированы в других контекстах

Предположим, что вы задаете класс polynomial. Если вы создаете метод double для класса polynomial, можно использовать его, чтобы вызвать другие функции, которые требуют входных параметров типа double.

p = polynomial(...);
dp = double(p);
roots(dp)

p является полиномиальным объектом, double является методом класса polynomial, и roots является стандартной функцией MATLAB®, входные параметры которой являются коэффициентами полинома.

Конвертеры для классов пакета

Классы, заданные в пакетах, могут иметь имена, которые являются разделенным от точки списком имен. Фамилия является классом, и предыдущие имена являются пакетами. Назовите методы преобразования с помощью спецификаторов пакета в именах методов. Например, метод преобразования, чтобы преобразовать объекты MyClass к объектам класса PkgName.PkgClass использует это имя метода:

classdef MyClass
   ...
   methods
      function objPkgClass = PkgName.PkgClass(objMyclass)
         ...
      end
   end
end

Вы не можете задать метод конвертера, который использует точки на имя в отдельном файле. Задайте конвертеры класса пакета в файле classdef.

Конвертеры и преобразованное в нижний индекс присвоение

Когда вы делаете преобразованный в нижний индекс оператор присваивания как:

A(1) = myobj;

MATLAB сравнивает класс переменной Right-Side к классу переменной Left-Side. Если классы отличаются, MATLAB пытается преобразовать переменную Right-Side в класс переменной Left-Side. Чтобы сделать это преобразование, MATLAB сначала ищет метод класса Правой стороны, который имеет то же имя как класс Левой стороны. Такой метод является методом конвертера, который подобен операции преобразования типа на других языках.

Если класс Правой стороны не задает метод, чтобы преобразовать от класса Правой стороны до класса Левой стороны, MATLAB вызывает конструктора класса Левой стороны. передача его переменная Right-Side.

Например, предположите, что вы делаете следующие присвоения:

A(1) = objA; % Object of class ClassA
A(2) = objB; % Object of class ClassB

MATLAB пытается вызвать метод ClassB по имени ClassA. Если никакой такой метод конвертера не существует, программное обеспечение MATLAB вызывает конструктора ClassA, передавая objB в качестве аргумента. Если конструктор ClassA не может принять objB как аргумент, то MATLAB возвращает ошибку.

Используйте массивы cell, чтобы хранить объекты различных классов.

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте