OOP: How to let a bunch of methods behave differently depending in the type of input?
6 views (last 30 days)
Show older comments
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
0 Comments
Accepted Answer
Matt J
on 9 Oct 2012
Edited: Matt J
on 9 Oct 2012
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
0 Comments
More Answers (1)
See Also
Categories
Find more on Whos in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!