MATLAB: OOP: How to let a bunch of methods behave differently depending in the type of input

abstractclassMATLABoopoverloading

Let's imagine we have a Class called OOP_Base and lots of subclasses like "OOP_Mult5" that implement the "Apply" Method defined "abstract" in the OOP_Base class.
I like to convert accidental char inputs for all those classes to double. I don't want to implement a isa(in,'char') in all hundred methods "OOP_Mult5" and so on.
Is it possible to put the "isa()"-query and a str2num() if the input is char in the OOP_Base for all subclasses?
% OOP_Base:
classdef OOP_Base
methods (Abstract = true)
result = Apply(in)
end
end
classdef OOP_Mult5 < OOP_Base
methods (Static = true)
function result = Apply(in)
result = 5*in;
end
end
end
P.S.: This is just an example to illustrate my problem. In reality I have to deal with lots of filters that should work with a special "Image"-class but also with simple R,G,B vectors.
Thank you very much in advance for your help,
Jan

Best Answer

Instead of making Apply() abstract, make it call abstract functions:
classdef OOP_Base
methods result=Apply(in)
if ischar(in), in=str2num(in); end
result=ApplyMain(in);
end
methods (Abstract = true)
result = ApplyMain(in)
end
end
classdef OOP_Mult5 < OOP_Base
methods (Static = true)
function result = ApplyMain(in)
result = 5*in;
end
end
end
Related Question