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

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

Можно преобразовать объект одного класса к объекту другого класса. Метод конвертера имеет то же имя как класс, который это преобразует в, такие как 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 массивы, чтобы хранить объекты различных классов.

Похожие темы