У меня возникли проблемы с поиском помощи в документации по matlab и в предыдущих вопросах об использовании наследования и конструкторов классов для создания интерфейса.Чтобы привести его в порядок, внутри пакета.
Вместо перетаскивания своего кода я могу сжать его следующим образом:
Пакет +MyPkg
имеет суперкласс Super
и несколько подклассов Sub1 Sub2
... Большинство моих свойств и методов определены в Super так, что Sub1
и Sub2
действительно существуют только для использования их конструкторов для простых подпрограмм или, возможно, нескольких методов, перегруженных из Super.
как мне написать написание классов и конструкторов для поддержки интерфейса, в котором я могу использовать следующие вызовы:
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)
и т. д.,
Надеюсь, что это поможет кому-то еще иметь дело с этими проблемами