У меня возникли проблемы с поиском помощи в документации Matlab и предыдущих вопросов об использовании наследования Matlab и конструкторов классов для создания интерфейса. Чтобы было аккуратно, в упаковке.
Вместо того, чтобы перетаскивать свой код, я могу сжать его следующим образом:
Пакет +MyPkg
имеет суперкласс Super
и несколько подклассов Sub1 Sub2
... Большинство моих свойств и методов определены в Super, так что Sub1
и Sub2
на самом деле существуют только для использования своих конструкторов для простых подпрограмм или, возможно, нескольких методов, перегруженных из Super.
Итак, как мне написать classdefs и конструкторы для поддержки интерфейса, в котором я могу использовать следующие вызовы:
a = MyPkg.Super(args).Sub1(args)
b = MyPkg.Super(args).Sub1(args).Sub1Method
В этом случае я хочу сохранить аргументы, связанные с Super, отдельно от аргументов, связанных с Sub1, для удобочитаемости и организации.
Вопросы приветствуются.
РЕДАКТИРОВАТЬ:
После рассмотрения принятого ответа ниже и некоторого просмотра я пришел к выводу, что интерфейс, показанный выше, на самом деле не соответствует духу OO, и для моего приложения для анализа данных более правильный подход к нему будет состоять из класса дескриптора с конструктор, который заполняет объект или массив ячеек свойствами объекта. Поскольку класс является классом дескриптора, можно использовать его методы для создания желаемых методов. то есть следующее
% in +MyPkg\
classdef Super < handle
properties
outputArray
end
methods
function self = Super(args)
self.outputArray=load_values(args);
end
function out = do_analysis(self,params)
% do some analysis
end
end
end
Затем использовать это:
data1 = MyPkg.Super(args)
% Populate the outputArray
analysis1 = data1.do_analysis(params)
так далее.,
Надеюсь, что это поможет кому-то другому справиться с этими проблемами