MATLAB OOP - redefine static method

3 次查看(过去 30 天)
Hi folks,
Following is an OOP question from a guy who knows nothing about OOP, so excuse me in advance :)
There is a built-in MATLAB class, located in matlabroot/toolbox/coder/connectivity/+coder/+rtiostreamtest/Parameters.m (if your version of MATLAB is earlier than R2012b, you might not find it). This class defines a method called getParameterInstance as Static. I just need to add another case to switch statement in this method. I don't want to modify the shipping MATLAB file, and i heard you can "subclass" those shipping classes.
Following documentation, i created a subclass like this:
classdef Parameters < coder.rtiostreamtest.Parameters
methods (Static)
function instance = getParameterInstance(tag, input)
..my very own version of switch-case..
end
end
end
This subclass is located in +myclass/Parameters.m file in MATLAB path. I then issued "rehash toolbox", just in case.
However, i don't see any effect. I'm not overriding the static method of coder.rtiostreamtest.Parameters class.
What am i doing wrong?
Many thanks!
  3 个评论
Mikhail
Mikhail 2013-7-8
I'm trying to extend existing rtiostreamtest implementation by adding my own connection type. I can do this easily by just adding another case to the switch statement in the getParameterInstance method.
However, i don't want to modify the built-in MATLAB files, hence the question.
After adding another switch case, i'll be calling the rtiostreamtest with my new connection type: rtiostreamtest('shmem','arg1','arg2')
Matt J
Matt J 2013-7-8
编辑:Matt J 2013-7-8
We need to see the code you executed, a description of what result you got, and a description of what you expected to get.

请先登录,再进行评论。

采纳的回答

per isakson
per isakson 2013-7-8
编辑:per isakson 2013-7-8
Do you use a call like this?
myclass.Parameters.getParameterInstance( 'two', 'args' )
  4 个评论
per isakson
per isakson 2013-7-8
编辑:per isakson 2013-7-8
I don't have access to the Embedded Coder toolbox.
Had the call in the "rtiostreamtest script" been
Parameters.getParameterInstance( 'two', 'args' )
it would have been possible to put a class named Parameters in the top of the Matlab search path. (Not in a package.)
Yes, you will probably need to modify the Matlab script, which should be avoided:-(.
AFAIK: the term built-in class does not include m-files, i.e. not code written in the Matlab language. However, I cannot find a proper definition in the documentation.
Mikhail
Mikhail 2013-7-8
Well, the "rtiostreamtest script" has
paramsClass = 'coder.rtiostreamtest.Parameters';
in it, so the path is fully qualified (if that's how it's called).
But as i said earlier, creating the +coder/+rtiostreamtest directory hierarchy higher in MATLAB path with my modified version of Parameters.m did the job.
Oh, sorry if i used built-in term incorrectly. I probably meant shipping.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Software Development Tools 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by